[iPhone] safeAreaInsets をコードで取得してSafeAreaに対応する

iPhone Xでは画面が 2:1 以上の横長になり、SafeAreaという概念が登場しました。四隅は角丸、上下左右のマージン、ステータスバー、ホームインジケータ等々を考慮する必要が出てきました。
 

Swift 4.1
Xcode 9.4

 

SafeArea

 
放っておいて実際に困ることは、ステータスバーやホームインジケータにボタンや文字が被るとユーザーからは使いにくいアプリとなってしまいますし、Appleもそこは適切な対応を求めています。特に広告は致命的ですね。
 

 

safeAreaInsets

 
Storyboardで設定する方法はべつにありますが、ここでは動的にコードでSafeAreaの取得と画面回転のケースを想定してみたいと思います。
 
SafeArea上下左右は safeAreaInsets から取得することができます。ただしこれは ViewDidLoadでは受け取れず、その後の videDidAppear で受け取れます。(この前でも取れるようですが)
 
PortraitではSafeAreaと画面に上に44.0, 下に34.0の余白があります。
 

 
また、画面が回転するときは
viewSafeAreaInsetsDidChange()で回転後のサイズを取り出せますが
willAnimateRotation()でも可能です。
 

 

サンプルコード

 
これらのSafeAreaを計算するコードです。
 
ViewController.swift

 

サンプル動画

 

 
 
References:
safeAreaInsets – UIView | Apple Developer Documentation
Positioning Content Relative to the Safe Area | Apple Developer
UIEdgeInsets – UIKit | Apple Developer Documentation
iPhone X用にアプリケーションをアップデートする – iOS – Apple Developer
iPhone X – Overview – iOS Human Interface Guidelines

スマホの下取り

まだ1年も使っていないスマホを新機種に変えたくて下取りしようとお店に持ち込んだことがありますが
結局なんだかんだと思ったほどの金額になりませんでした(涙

このネットオフは専業のため高額買取が可能で、お店に行く時間が無い人にとっては送料無料の宅配便が自宅まで引取りに来てくれるのは助かります。

定額買取キャンペーン中であればキズがあっても付属品が無くても減額無しなのでお得です。」


 

 

誤字脱字、意味不明などのご意見は 謙: e-mail まで
ブックマークしておくと便利です このエントリーをはてなブックマークに追加
Twitter:




Apple Watch Series 4
44mm
(GPS)/(GPS+Cellular)
スペースグレイアルミニウムケース
ブラックスポーツバンド




ページのトップへ戻る

シェアする

  • このエントリーをはてなブックマークに追加

フォローする