1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

iOSで「拡大表示」の設定を行うとUIScreen.main.boundsのサイズが変わる

Last updated at Posted at 2021-11-15

TL;DR

  • 「拡大表示」設定を行うと論理的な解像度( UIScreen.main.bounds )が一段階小さくなる
    • iPhone 8は320x568になる
  • 「拡大表示」設定になっていても UIScreen.nativeBounds.width / UIScreen.main.scale で拡大表示ではないときの解像度と同じ画面幅を取得できる
Device bounds.width nativeBounds.width scale nativeScale
8 375 750 2 2
8(拡大) 320 750 2 2.34375
13 Pro 390 1170 3 3
13 Pro(拡大) 320 1170 3 3.65625
13 Pro Max 428 1284 3 3
13 Pro Max(拡大) 375 1170 3 3.424

「拡大表示」とは

iPhoneの 設定-画面表示と明るさ-拡大表示-表示-設定 から変更できるもの。

画面の表示内容が大きくなったように見える。

screenshot.PNG

この設定を行うと論理的な解像度が一段階小さくなり、引き伸ばされて表示されるようになっている。

プログラム的には UIScreen.main.bounds 等の数値が小さくなっている。

例えばiPhone 8は375x667だが、「拡大表示」にすると320x568とiPhone SE(1st)と同じになる。

元々の解像度がほしいときは

nativeBoundsscale を用いる。

let originalWidth = UIScreen.nativeBounds.width / UIScreen.main.scale
let originalHeight = UIScreen.nativeBounds.height / UIScreen.main.scale

nativeBounds

ディスプレイの物理的解像度。iPhoneはHiDPIなので論理的解像度の倍の数値になっている
(iPhone 8なら750x667)

また画面が回転していても widthheight が入れ替わらない。

scale

デフォルトの論理的解像度に対する物理的解像度の比。
(iPhone 8なら2)

scale は「拡大表示」設定を行っていても変化しないため、「現在の論理的解像度に対する物理的解像度の比」を取得したい場合は nativeScale を用いる。

Device bounds.width nativeBounds.width scale nativeScale
8 375 750 2 2
8(拡大) 320 750 2 2.34375
13 Pro 390 1170 3 3
13 Pro(拡大) 320 1170 3 3.65625
13 Pro Max 428 1284 3 3
13 Pro Max(拡大) 375 1170 3 3.424
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?