【備忘録】iOS 14 細かいTips 写真アクセス権限・バックボタン


iOS 14のTipsを書いていこうと思います。

写真のアクセス権限の変更

iOS 13までは写真のアクセス権限の選択肢が許可しないOKの2択でしたが、
iOS 14からは写真のアクセス権限の選択肢が 写真を選択全ての写真へのアクセスを許可許可しないの3択になりました。
iOS 14では写真個別にアクセス権限を与えれるようになりました。

iOS 13ダイアログ

iOS 14ダイアログ

写真のアクセス権限の呼び出しは以下のコードでOSに合わせてダイアログを表示します。

PHPhotoLibrary.requestAuthorization { _ in
   // 省略
}

iOS 14でも従来のダイアログを出すには?

アプリで写真を保存するだけの用途なら従来のダイアログで問題ないと思います。

まず、Info.plistにPrivacy - Photo Library Additions Usage Description (NSPhotoLibraryAddUsageDescription)を設定して文言を追加します。

なら以下のコードで大丈夫です。

if #available(iOS 14, *) {
     PHPhotoLibrary.requestAuthorization(for: .addOnly) { _ in
        // 省略     
     }
} else {
     PHPhotoLibrary.requestAuthorization { _ in
        // 省略        
     }
}

requestAuthorizationというメソッドで 写真のみ追加もしくは 読み出し/書き込みのどちらかで指定して呼び出しできるので .addOnlyを指定すると従来のダイアログが出すことができます。

バックボタン

iOS 14からバックボタンを長押しすることで前の画面らをリストしたポップアップが表示され、一気に一番最初の画面に戻るなどできるようになりました。

例 設定アプリ

他にもバックボタンの見た目も制御できるようになり、UINavigationItemクラスに以下のプロパティが追加されました。

var backButtonDisplayMode: UINavigationItem.BackButtonDisplayMode { get set }

見た目は3種類設定できます

.default

前の画面タイトルがバックボタンに反映します
※タイトルが入ってなければ Backになります

.generic

バックボタンがBackになります

.minimal

バックボタンに名称が表示されず<だけになります

コード例

if #available(iOS 14.0, *) {
    self.navigationItem.backButtonDisplayMode = .minimal
}

注意

バックボタンの見た目は制御できますが、長押しした際のリストは画面タイトル(self.title)もしくはバックボタン(backButtonTitle)の文言が表示されます。

もし何も文言を入れてないと空欄にまたは同じ文言を入れると、どこの画面に戻るかぱっと見でわからなくなってしまいます。

例 同じ文言

iOS 14のバックボタンの対応として長押しした際にどこの画面に戻るか分かる文言を設定してあげるといいです。