Programming/Mac & iOS 54

[iOS] NSUserActivity 활용 방법 (Hand-off)

NSUserActivity는 검색 결과나 핸드오프를 통하여 사용자가 앱을 사용하던 상태를 저장 복원하기 위해 사용하는 간편한 방법이다. 핸드오프 기능이 처음으로 제공된 iOS8에서부터 지원한다. 처음엔 iOS8에서는 핸드오프를 지원하기 위해서 추가되었다. 그런데 iOS9부터 각 상태를 indexing하여 spotlight 검색결과로 활용할 수 있도록 개선되었다. 먼저 핸드오프에서 사용하는 방법에 대해 말하고, spotlight를 통한 indexing은 다음 포스팅에서 다루겠다. Hand-off 핸드오프는 Mac OS X과 iOS 기기간 지속적인 작업이 가능하도록 해주는 기능이다. 하지만 지속적인 작업을 가능하게 하기 위해서 사용자가 작업하던 환경을 저장했다가 복구하는 수단이 필요하다. 그리고 저장하고 복..

[Swift] Swift is now Open Source

애플에서 Swift를 오픈소스화 한다는 공약을 실천했다. 현재 레파지토리는 Github를 이용하고 있으며 담당 사이트로 Swift.org를 개설했다. 이슈 트래킹은 Jira를 이용한다. Mailing-list를 통하여 Swift의 변동사항과 개발 이슈/동향 등을 reporting 받거나 다른 개발자들과 소통 창구로 이용할 수 있다. 아래 Swift 관련 URL을 모아 놨다. 역시 애플에서 관리하는 프로젝트라서 Contribution section에 있는 가이드를 꼼꼼히 읽고 접근하는 것이 좋을 것 같다. Apple in Github : https://github.com/appleSwift Repository : https://github.com/apple/swift Swift.org : https://s..

[iOS] Interactive Notification with Text Input (iOS9 or later)

우리는 일전에 iOS8에서 소개되었던 Interactive Notification이라는 기능에 대해 배운바가 있다. 그런데 필자가 다시 Interactive Notification이라는 물건을 다시 꺼내 들어 설명하는 이유는 무엇인가. 그토록 기다려왔던 TextField가 Interactive Notification에 추가되어 API로 공개되었기 때문이다. 아래의 이미지는 페이스북 메신저에서 선 구현한 Interactive Notification에 TextField가 추가된 모습이다. 열심히 구글링을 한 결과, iOS9에서 새롭게 추가된 프로퍼티의 영향임이 확인되었다. UIUserNotificationAction이라는 것을 이용하여 Interactive Notification에 사용자의 action을 활..

[iOS] SFSafariViewContoller 구현 및 활용

SFSafariViewController SFSafariViewController는 iOS9부터 지원한다. 기존의 UIWebView와 달리 브라우징 화면만 존재하는 것이 아니라, 기본 인터페이스(읽기 도구, Full Browsing, Content Blocking 등)가 포함된다. 그리고 번들앱인 Safari와 cookie와 웹 사이트 데이터 등을 공유한다. 앱에서 SFSafariViewController와 사용자 사이의 데이터(히스토리, 웹사이트 데이터 등)를 가로챌 수 없다. SFSafariViewController는 아래와 같은 UI적 특징을 가진다. - '읽기 도구' 버튼을 제공- 공유나 커스텀 서비스 이용에 필요한 액션 버튼을 제공- Back/Forward 버튼을 제공하며, 현재 페이지를 Saf..

[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:를 통해 다시 그리지 않고 비트맵 ..