개발자 입장에서 본 iOS 7의 변화점

Dohyeon Kim
7 min readJun 12, 2013

--

이번 WWDC 2013은 역대 행사보다도 많은 기대와 주목을 받은 행사였습니다. 새로운 iOS가 과연 소비자들의 기대에 얼마나 부응할 수 있을지를 알 수 있는 동시에 포스트 잡스 시대에 애플이 무엇을 할 수 있는지를 보여주는 행사였기 때문일까요.

이번에 새로 발표된 iOS 7은 디자인적으로 많은 변화가 있었습니다. 전문가들도 이번 iOS 7에 대해 다양한 견해를 가지고 있지만 대체적으로 “개발자가 해야 할 일이 많이 늘었지만, 열심히 일하면(?) 충분한 보상을 받게 될 것이다”라는 점에 동의하고 있습니다. 개발자 입장에서 본 iOS 7에서의 변화점을 What’s New in iOS 문서를 참고하여 정리해 보았습니다.

(1) 유저 인터페이스의 변화

1. 새로운 UI 디자인

애플은 이번에 UI를 새롭게 바꾸면서 다음과 같은 키워드를 제시하였습니다.

기능과 사용자 컨텐츠에 집중. 투명함. 부드럽고 현실감 있는 모션. 명확함. 깊이.

iOS 7 SDK를 포함하여 빌드하게 되면 새 UI가 자동으로 적용 됩니다. iOS 7 UI로 전환을 하다 보면 앱이 동작하는 방법에 대해서 근본적으로 다시 고민하게 됩니다. 애플은 이를 위해 iOS 7 UI Transition Guide를 만들어서 배포하고 있습니다.

2. UIKit Dynamics

iOS 7에는 자체적인 물리 엔진이 도입되었습니다. UIView에 물리적인 속성을 부여해서 실생활에 존재하는 객체처럼 동작하게 할 수 있습니다. 새 메시지 앱에서 대화들을 스크롤 할 때 각각의 객체가 속도가 다르게 스크롤 되는 것과 같은 효과들을 구현할 수 있습니다. 적용을 위해서는 UIDynamicItem이라는 프로토콜을 구현해야 하며 다음과 같은 속성이 있습니다.

  • UIAttachmentBehavior: 두 아이템이 같이 움직이게 할 때
  • UICollisionBehavior: 다른 아이템과 충돌이 일어나게 할 때
  • UIGravityBehavior: 특정 지점에 중력을 이용해서 다가갈 수 있도록 할 때
  • UIPushBehavior: 다이나믹 아이템을 위해 힘 벡터를 지정
  • UISnapBehavior: 특정 아이템에 붙어있도록 할 때

3. Text Kit

타이포그라피와 관련된 기능을 모은 프레임워크입니다. 예전에는 고급 문자 표시를 위해서 CoreText를 사용했는데 좀 더 하위레벨에서 편리하게 사용할 수 있도록 만들어졌고 실제로 CoreText에서 상당부분을 가져왔습니다. 텍스트 스타일링부터 시작해서 복잡한 도형을 피해서 텍스트를 표현하는 것, 폰트 관리 등을 훨씬 적은 양의 코드로 할 수 있게 되었습니다.

4. 멀티태스킹 모드 추가

다음 두 가지의 백그라운드 실행 모드가 추가되었습니다. 백그라운드 다운로드를 위해서는 NSURLSession 클래스를 사용해야 합니다. 여러 개의 파일을 동시에 다운로드/업로드 하는 것이 가능하고 인증에 관련된 처리도 해줍니다.

  • fetch: 웹상의 새로운 컨텐츠가 업데이트 되었는지를 주기적으로 체크하고 다운로드 하는 것이 가능해졌습니다.
  • remote-notification: push notification을 통해서 백그라운드 다운로드를 실행할 수 있습니다.

(2) 게임 관련

1. Sprite Kit 프레임워크

2D와 2.5D를 효율적으로 구현할 수 있는 프레임워크가 추가되었습니다. 크로스 플랫폼이 아니라는 장점만 빼고 본다면 Cocod2D의 상당 부분을 대체할 수 있을 것으로 보입니다. 물리 엔진도 쓸 수 있고, 사운드 재생, 스프라이트, 파티클, 애니메이션 등을 구현하기 편하게 되어있습니다. 특별히 새 Xcode에는 파티클 편집기가 포함되어 있습니다.

2. Game Controlelr 프레임워크

드디어 iOS에서 게임용 컨트롤러를 사용할 수 있게 되었습니다. 물론 모든 컨트롤러를 다 사용할 수 있는 건 아니고, Made for iOS 프로그램(MFi)을 통해 공식 등록된 컨트롤러만 사용할 수 있습니다.

3. Game Center 개선

  • 최대 리더보드 수 증가, 업적 달성 조건을 부여 가능
  • 치트(cheating)를 쓰지 못하도록 보안 강화

(3) 맵

맵킷을 이용해서 3D 지도를 앱상에서 보여주는 것이 가능합니다. 또 프로그래밍적으로 시야를 조절할 수 있습니다.

  • Overlay를 줌 레벨별로 지정할 수 있다고 합니다.
  • MKMapCamera 객체를 통해 맵의 시야를 조절할 수 있습니다.
  • MKDirections 클래스를 통해 애플 서버에서 루트 정보를 얻어올 수 있습니다.
  • 곡면인 지구상에 직선을 표시하는 것을 처리해주는 클래스(MKGeodesicPolyline)가 생겼습니다.
  • MKMapSnapshotter 클래스를 통해 맵의 캡쳐가 가능합니다.
  • 좀 더 간편한 방법으로 오버레이를 표시 해주는 MKOverlayRenderer 클래스가 생겼습니다.
  • MKTileOverlay와 MKTileOverlayRenderer 클래스를 통해 사용자가 제공하는 맵 타일을 표시할 수 있습니다.

(4) 에어 드롭(Air Drop)

주변에 있는 기기와 여러 가지 데이터를 손쉽게 공유할 수 있습니다. iOS 6에서 도입되었던 UIActivityViewController를 지원합니다.

(5) App간의 오디오 전송

Audio Unit 프레임워크를 통해서 app간에 미디 데이터나 오디오 스트리밍 데이터를 주고 받을 수 있습니다. iOS 오디오 앱들의 발전이 기대됩니다.

(6) Peer to peer 접속

Multipeer Connectiviry 프레임워크를 통해 인근에 있는 기기들을 감지하고 직접 연결을 할 수 있습니다. NCPeerPickerViewController를 통해 주변 기기를 선택하는 UI를 표시할 수도 있고, NCNeerbyServiceBrowser 클래스를 통해 프로그래밍적으로 처리할 수 도 있습니다.

(7) 새로 추가된 프레임워크

  • Game Controller 프레임워크
  • Sprite Kit 프레임워크
  • Multipeer Connectivity 프레임워크
  • JavaScript Core 프레임워크: JavaScript 객체를 wrapping하고, JSON 파싱을 해줍니다.
  • Media Accessibility 프레임워크: 사용자가 가지고 있는 미디어에서 청각 장애인용 자막 정보를 읽을 수 있습니다.
  • Safari Services 프레임워크: 사파리 리딩 리스트에 아이템을 추가할 수 있습니다.

이번 WWDC 2013은 바뀐 점도 많고 공부해야 할 것도 많은 행사인 것 같습니다. 이미 iOS 6이 오징어로 보이기 시작하는 현상이 벌어지고 있으니 부랴부랴 앱을 업데이트 해야 할 것 같습니다.

Originally published at www.shako.net on June 12, 2013.

--

--