見出し画像

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について紹介されている。

同セッションにて、利用方法が完結に説明されていた:

画像1

UIKitアニメーションは自動的にProMotionを利用する
MetalビューはオプトインでInfo.plistに CADisableMinimumFrameDuration キーを追加して true をセットする

なんともシンプル。そして簡単。

自動的に適用されるのはUIKit「アニメーション」だけ?

自分が気になったのはここ。UIKit animationsは自動でProMotionを利用するとあるが、その「アニメーション」にはどこまで含まれるのか?

たとえば昔からあるUIViewの各種アニメーションメソッドや、UIViewPropertyAnimator を利用したアニメーションは明らかにここに含まれるとは思う。

しかしたとえば Timer を回して画面の更新を行った場合等はどうなのだろう?

個人開発でつくった「100枚/秒で写真を閲覧」できるアプリではUIImageViewの画像を100Hzで更新しているわけだが、ProMotion対応ディスプレイを搭載した端末では(Info.plistのオプトイン設定をしなくても)ちゃんとその速度で更新されているのだろうか?

というわけでそのあたりを検証してみた。

ここから先は

1,067字

文章やサンプルコードは多少荒削りかもしれませんが、ブログや書籍にはまだ書いていないことを日々大量に載せています。たったの400円で、すぐに購読解除してもその月は過去記事もさかのぼって読めるので、少しでも気になる内容がある方にはオトクかと思います。

技術的なメモやサンプルコード、思いついたアイデア、考えたこと、お金の話等々、頭をよぎった諸々を気軽に垂れ流しています。

最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/