2017年11月06日

Fall 2017 | Session 201 | Building Apps for iPhone X

https://developer.apple.com/videos/play/fall2017/201/
13:35

いよいよiPhone Xが発売されましたが、iPhone X対応アプリを実装するためのビデオが公開されていました。Fall 2017と題する短いビデオクリップ集。

このセッションではiPhone X対応するために必要なコード等の修正点を簡潔に伝えています。一応iOS 11対応という形でiOS 11で導入されたAPIですがすべてiPhone Xでセンサーカメラ部分が導入されたり、コントロールセンサーが代わったりしたことに対応する方法。

WWDCアプリを例に示している。

□Auto Layout

Auto Layoutを使っていれば自動的にiPhone Xのレイアウトに対応可能。

新たに導入された Safe Area に注意する必要がある。スクリーンの表示エリアとコントロールを配置してよいエリアに違いがある。Safe Area外に追加すると、コントロールセンターの操作と競合することになる。XibファイルでレイアウトするときにSuperview に接続するのではなく、Safe Area に接続する。

□サーチコントローラー(Swift)

サーチコントロールをテーブルビューで使う場合、サーチコントロールを生成して親コントローラー上でpresent()するだけでよかった。バックグラウンドカラーが違ったり、ランドスケープモードでクリッピングエリアがコントロールを隠したりすることになる。

iOS11では(iPhone Xに対応するためには)navigationItem に追加する必要がある(コードは6:40あたり)。


let serchController = UISerchController(serchResultsController: nil)
serchController.serchResultsUpdater = self
serchController.obscuresBackgroundDuringPresentation = false
serchController.serchBar.text = serchText

if #available(iOS 11.0, *) {
self.navigationItem.serchController = searController
serchController.isActive = true
} else {
present(searchController, animated: true, copletion: nil )
}



□テーブルビューのヘッダのサーチフール度(Objective-C)

if (@available(iOS 11.0, *) {
self.navigationItem.serchController = self.serchController;
self.navigationItem.serchController.active = showSearchBar;
} else {
if ( _showSerchBar ) {
self.tableView.tableHeader =
self.serchController.searchBar;
} else {
self.tableView.tableHeaderView = nil;
}
}



□テーブルビューのセル

テーブルセル内のContent Viewはデフォルトで Safe Area 内に配置されるが、Xib の「Content View Insets To Safe Area」をチェックをはずすとSafe Area外まで表示させることができる。

また「Use Safe Area Layout Guides」をチェックする。

□Summary

iOS 11 SDKを使う。Launch Storyboardを使う。
縦横両方のレイアウトでテストする。
Safe Areas に気を付ける
・safeAreaLayoutGuide for Auto Layout
・safeAreaInsets for manual calculations


posted by 永遠製作所 at 23:12| 東京 ☀| Comment(0) | WWDC | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

※ブログオーナーが承認したコメントのみ表示されます。
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。