Programming/Mac & iOS 50

[iOS] Segue의 활용/종류

Segue란 무엇인가? Segue는 사전적 의미로는 음악에서 악장에서 다음 악장으로 끊기지 않고 넘어가는 것을 의미한다. 즉 '계속됨', '지속되다'의 의미를 지진다. 그럼 iOS 플랫폼에서의 Segue는 무엇인가. 필자가 알기론 iOS Segue가 등장한 시점은 스토리보드가 등장했을 때로 기억한다. 스토리보드가 등장하면서 일전에 사용하던 ViewController간의 view transition push/pop이나 presentation 등의 동작을 코드에서 뿐만아니라 스토리보드를 동하여 정의할 수 있게 되었다. 앞서 말한 스토리보드상의 view transition의 구현체를 Segue라고 부른다. Segue의 종류 Segue는 개발자가 커스터마이징한 것을 제외하게 되면 크게 4가지로 나눌수 있다. S..

[iOS] 3D Touch 활용/구현 하기 (아이폰 6S/6S Plus or later)

3D Touch는 iPhone 6S 시리즈에서 새로 추가된 포스 터치를 활용한 UX이다. 기존의 정전식 터치 패널이 x,y 좌표를 이용한 평면 좌표계의 터치 인식이었다면 3D Touch는 감압식을 중첩하여 z축의 좌표계를 포함한 3D UX를 구현한 것이다. 이에 기획자들은 이를 이용하여 새로운 컨셉과 시나리오를 구상하고, 개발자들은 3D Touch를 활용한 기능 구현을 터득하는 상황에 도달하게 된다. 아래의 글은 3D Touch를 구현하는 방식에 집중되어 있으며, 자세한 구현 방식을 애플의 샘플 코드를 참조하기를 바란다. P. S. 3D touch는 6S 시리즈 이후로 출시된 기기에서만 사용이 가능하다. 이를 구분하기 위해서 UIDevice를 통해 모델 명을 가져오는 방법도 있겠지만 Apple에서는 UI..

[iOS] NSOperation과 NSOperationQueue 개념과 사용

비동기적 프로세싱을 위해서 iOS 플랫폼에서 GCD 디스패치를 주로 사용하게 된다. GCD는 개발자에게 복잡한 스케줄링 혹은 논리 구조로부터 해방시켜준다. 특히 Block Coding을 이용하여 단순 구현을 쉽게 만들어준다. 하지만 보다 복잡한 로직의 구현과 코드 재사용성을 높히기를 원한다면 NSOperation과 NSOperationQueue를 사용하면 좋다. NSOperation은 GCD처럼 비동기적 프로세싱을 위해서 안성맞춤이다. 대표적인 비동기 로직으로 네트워크나 파일I/O 등 엑세스 시간이 긴 작업들이 있다. 앞서 말한 비동기 로직을 처리할 때, 사용하면 된다. NSOperation NSOperation의 구현은 마치 Java의 Thread 구현과 비슷하다. 먼저 알아두어야할 것은 NSOpera..

[iOS] Core Animation 사용하기

미려한 UI를 위해선 아름다운 효과는 필수이다. 하지만 아름다운 효과를 위해 animation을 무리하게 사용하면 main thread에 너무 많은 작업을 가중시킨다. 미려한 UI를 위해 animation을 사용하되, main thread에 작업을 가중시키지 않기 위해 무엇을 해야할까? 그 방법 중에 하나가 UIView대신에 Layer를 이용한 animation의 구현이다. UIView는 이벤트 입력을 받을 수 있는 View의 전체를 이동하는 반면, Layer는 View의 UI 표시영역만 사용하게 된다. 이를 이용한 animation은 main thread의 부담을 덜어주게 된다. UI 표시영역, 즉 비트맵 상의 이미지만 움직이기 때문에 소프트웨어적으로 drawRect:를 통해 다시 그리지 않고 비트맵 ..

[iOS] iOS에서 쿠키 사용하기 (NSHTTPCookieStorage, NSHTTPCookie)

쿠키란? 쿠키는 웹 사이트로부터 받아 사용자의 브라우저에 저장하는 작은 데이터이다. 쿠키는 웹사이트를 로드할 때마다 사용자의 활동과 식별을 위해 서버로 다시 돌려 보내는데 사용된다. 쿠키는 상태 정보를 기억하고 버튼 클릭, 브라우징 히스토리, 로그인 등 브라우저에서의 활동을 기록하는 데 필요한 신뢰있는 메카니즘으로 만들어졌다. 쿠키는 기본적으로 자신을 보낸 서버의 도메인을 가지고 있고 해당 도메인에 연결할 때마다 사용된다. 데이터는 'name=value' 구조로 구성된 String 데이터 쌍이다. 쿠키는 일반적으로 웹브라우저가 종료되기 전까지 유지되며 만료시간을 설정할 경우에는 브라우저가 종료되도 설정한 만료시간까지 유지된다. 아래를 보면 쿠키가 'session'이란 name에 'eylZWNIbnQiOl..

[iOS] iOS 멀티태스킹 (Background Service 이용하는 법 : iOS7 이상)

iOS7부터 '멀티 태스킹'에 대해 강력한 지원을 해준다. Background의 세계가 열렸다. 사용자들이 Foreground에서 기다리던 시대는 지났다. 개발자들은 Background를 지원하며 사용자들이 지루하게 기다린 시간을 줄일 의무가 '자의 반, 타의 반'으로 부여됬다. 그럼, 멀티태스킹을 지원하기 위한 Background Service에 대해 알아보자. ** 아래의 기능들을 통해 완전히 종료된 앱을 실행상태로 만드는 것은 불가능하며, 메모리에 로드된 상태의 background에서만 실행을 보장한다. 새로운 멀티 태스킹 API로는 3가지가 추가되었다. 3가지는 아래와 같다. 1. Background Fetch 주기적인 업데이트 사용할 때 사용2. Remote Notification (Silent..

[watchOS] Watch Kit : watchOS 1.0으로 개발하기

Watch Kit이 어제 공개되었다. Watch Kit은 Xcode 6.2에서 SDK를 제공할 예정이며 현재 (2014.11.20)는 베타 버전이다. 지금도 Xcode 6.2 베타 버전을 설치한다면 시뮬레이터로 Watch App을 실행 가능하다. Watch Kit에서 제공하는 구성요소는 크게 Watch에서 구동하는 'App'과 간단한 정보만을 표시하고 터치할 때 앱을 실행시키는 'Glances', 알림을 표시하고 사용자의 동작을 유도하는 'Notification' 등 3가지이다. Watch App & Watch Extension 먼저 Watch App부터 설명하면 Watch App은 단순히 UI와 UI 리소스만을 포함한다. 실제로 데이터를 처리하고 요청하는 등의 비지니스 로직은 iOS App의 Exten..

[iOS] Notification Action : Interactive Notification in iOS8

iOS8에서 추가된 새로운 기능 중에 알림에 대해 사용자가 즉각적으로 처리할 수 있도록 해주는 강력한 기능이 추가됬다. 'Interactive Notification'이라고 소개된 이 기능은 알림이 왔을 때, 사용자가 알림 창을 살짤 내리면 알림에 대한 처리가 바로 가능하다. 이는 아이폰의 상태바 알림 창 뿐만아니라 잠금 화면에서도 활용 가능하여 사용자의 편의를 극대화 시켜주는 기능이다. 개발할 때, 'notification action'으로 검색해보면 쉽게 찾을 수 있다. notification action을 구현하기 위해선 action을 UIUserNotificationAction을 이용하여 객체를 정의한다. 정의된 action을 UIUserNotificationCategory로 묶은 다음 'regi..