ProMotion/iPhone 13 Proの120Hzディスプレイに対応する
先日発表されたiPhone 13 Pro/Pro Maxは、120Hzのリフレッシュレートに対応したディスプレイをiPhoneとしては初めて搭載する。
iPhone 13 ProとiPhone 13 Pro Maxは、これまでのiPhoneで最も先進的なディスプレイであるProMotionを採用したSuper Retina XDRを搭載しており、10Hzから120Hzのアダプティブリフレッシュレートに対応するため、ユーザーが必要とする時は高速で画面を描き換え、不要な時はバッテリーの消耗を抑えます。6.1インチと6.7インチの両サイズ4に搭載された賢く新しいディスプレイは、より効率の高いOLEDパネル、A15 Bionicの新しいディスプレイエンジン、さらに速くなったGPU性能、常時オンのタッチコプロセッサを活用し、iOS 15と共に動作するよう特別に設計されているので、ジェスチャー、アニメーション、ゲームを楽しむ際などにより速く、より反応が良く感じられます。
このProMotionを利用するために、実装としては何をやればいいのか、というのを書く。
UIKitは自動で適用、Metalはオプトイン
実はこのProMotion、今年初めて登場したものではなく、iPad Proには2017年に発表されたモデルから搭載されていた。
WWDCでは2017年の"Introducing Metal 2"というセッションで既にProMotionについて紹介されている。
同セッションにて、利用方法が完結に説明されていた:
・UIKitアニメーションは自動的にProMotionを利用する
・MetalビューはオプトインでInfo.plistに CADisableMinimumFrameDuration キーを追加して true をセットする
なんともシンプル。そして簡単。
自動的に適用されるのはUIKit「アニメーション」だけ?
自分が気になったのはここ。UIKit animationsは自動でProMotionを利用するとあるが、その「アニメーション」にはどこまで含まれるのか?
たとえば昔からあるUIViewの各種アニメーションメソッドや、UIViewPropertyAnimator を利用したアニメーションは明らかにここに含まれるとは思う。
しかしたとえば Timer を回して画面の更新を行った場合等はどうなのだろう?
個人開発でつくった「100枚/秒で写真を閲覧」できるアプリではUIImageViewの画像を100Hzで更新しているわけだが、ProMotion対応ディスプレイを搭載した端末では(Info.plistのオプトイン設定をしなくても)ちゃんとその速度で更新されているのだろうか?
というわけでそのあたりを検証してみた。
最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/