Edited at
iOSDay 20

アプリをiOS 7対応する時に知っておきたいことまとめ

More than 5 years have passed since last update.

@himara2 です。iOS Advent Calendar の20日目を担当します。

iOS 7対応時に知っておきたい情報をまとめます。


はじめに

iOS 7が登場から3ヵ月が過ぎ、普及率が75%を超えるほどiOS 7は浸透しています。

先日にはついにAppleが「2014/2/1以降に申請するアプリはiOS 7に最適化されている必要がある」とアナウンスしました。

これからアプリのiOS 7対応は必須化していきます。

この記事ではこれからiOS 7対応をする方向けに、新APIやiOS 7対応時に助かるリンク集をまとめてみます。


1. 見た目関連のAPI


Custom Transition


  • ViewController間の遷移が簡単にカスタマイズできるようになった

  • NavigationController, TabBarController, Modal などの遷移を自作できる


  • UIViewControllerTransitioningDelegateUIViewControllerAnimatedTransitioning プロトコルを使う

  • PinterestのiOS 7対応で紹介されている以下のようなTransitionが自作できる


  • :alt


もっと詳しく


TextKit


  • テキストの表現をより便利にしてくれるAPI

  • これまでCoreTextを使っていた表現を UILabel や UITextView で実装できる

  • アンカーテキストの装飾、文字の回り込みなどが指定できる

  • :alt


もっと詳しく


Motion Effect


  • iOS 7らしい視差効果を表現する

  • 画面を傾けると奥行きが感じられるアレ

  • ホーム画面の他、Safari のタブ切り替えの画面などで使われている


もっと詳しく


UIKit Dynamics


  • UIKitに物理演算の動きを与えられるAPI

  • 重力や張力、密度などを設定でき、バネやぷるぷるした動きを実装可能

  • ゲーム用ではない(ゲーム用にはSpriteKitを使えとAppleは言っている)


もっと詳しく


2. ロジック関連のAPI


Background Fetch


  • OSが定期的にバックグラウンドでアプリを起こし、コンテンツ更新等の処理を行ってくれる

  • 発火の頻度はOSがユーザーのアプリ使用頻度から学習して適切なタイミングで実施

  • SNSやニュースアプリなど、定期的にコンテンツが更新されるアプリで有効


もっと詳しく


Silent Push Notification


  • Remote Push Notificationの拡張版

  • pushの受け取り時にバックグラウンドでアプリを起こしてコンテンツ更新等の処理を行う

  • pushで流す値に {content-availble: 1} を指定すればSilent Pushとなる

  • メッセージングアプリなど不定期にコンテンツを受け取るアプリで有効


もっと詳しく


NSURLSession


  • NSURLConnectionにとってかわる通信周りを司るクラス

  • セッションの持ち方などが改善している

  • バックグラウンドでもファイルのダウンロード・アップロードが可能(ただしWi-Fi only)

  • ストレージサービスなど大容量ファイルを扱うアプリで有効


もっと詳しく


Dynamic Type


  • 画面に表示する文字サイズを動的に変更するAPI

  • 標準の設定アプリでテキストサイズを指定すると全アプリ共通でサイズが変更される

  • アプリ側では"Body"や"Headline"などのテキストスタイルを指定する


もっと詳しく


3. その他のAPI


AVSpeech Synthesizer


  • iOS 7から追加されたテキストを音声読み上げしてくれるAPI

  • 日本語含む様々な言語で読み上げが可能


もっと詳しく


その他


App Switcherについて


iOS 7対応で発生する問題に対するベストプラクティス


iOS 7らしい"ぼかし効果"を得たい


  • 標準のAPIには実装されていない

  • iOS-blurというオープンソースを使う



  • AppleのサンプルコードからUIImageのカテゴリを抜いてくる




既存のバージョンとiOS 7とを両立させる


iOS 7から追加されたAPI一覧