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

iPhone X以降では画面のアスペクトレシオが 2:1 の横長モデルも発売され、SafeAreaという概念が登場しました。四隅は角丸、上下左右のマージン、ステータスバー、ホームインジケータ等々を考慮する必要が出てきました。
 

Swift 5.1
Xcode 11.4

 

SafeArea

 
SafeAreaを考慮せずに放っておいて実際に困ることは、ステータスバーやホームインジケータにボタンや文字が被りユーザーからは使いにくいアプリとなってしまいます。

Appleもそこは適切な対応を求めています。特に広告は致命的ですね。
 

 

safeAreaInsets

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

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

 

サンプルコード

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

 

サンプル動画

 
画面を傾けて、あるいはSimulatorのDeviceから画面を回転させてください。


 
 
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

一人でアプリ開発の限界を感じたら

アプリ開発を始めたけどわからないところがあり、誰かに聞きたいけど周りにはそんな人はいない…あるいは、会社で働いていて日中そんなに時間をとれないなど、オンライン・スクールがいいと思います。


TECH ACADEMY
自宅にいながら1時間でプログラミング基礎を習得

こういうものではアプリ作れないと言う意見もありますが、それは結局本人のやる気があるかないかです。やる気があっても独学では突破しにくいところは教えてもらうのが一番早い。


侍エンジニア塾
侍エンジニア塾 無料体験レッスン



とても簡単なことなのに本やネットの画像だけでは分かりにくいことはあります。実際に質問してピンポイントで教えてもらうと、なんだそんなこと、と言うのがけっこうあります。


CodeCamp
~約20,000名の受講生と300社以上の導入実績~
現役エンジニアのオンライン家庭教師CodeCamp




直接(ネットで)誰か分かる人に聞いた方が早く解決して、上達も早いと思います。


Play Ground
本業と並行してやるには月額制なのがありがたいです。


無料で転職まで
これはiOSアプリ限定ではありませんが無料です
その代わり就職することを前提にしたスクールで「エンジニアになって職を得たい」のであれば手っ取り早いかもしれません

受講料無料:社会人転職コース


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


シェアする

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

フォローする