iOS Resolution in Simulator is different from Real Devices. Xcode模擬器與實機取到的螢幕大小不同

(iOS Resolution, Simulator, Real Devices, UIScreen.main.nativeBounds, UIScreen.main.bounds)

在製作APP的時下圖的畫面是一個WKWebView
依據不同手機型號設定 x, y, width, height數值
卻意外發現同樣在8 Plus上在模擬器與實機上不同(如下圖左右顯示)

原因是因為依據UIScreen.main.nativeBounds判斷現在手機的型號

P.S 偷懶的做法透過螢幕的寬或高判斷型號,或許透過下篇文章的介紹,透過手機型號資訊更準確

找到一個網頁整理了iOS型號的Logical Width, Logical Height, Physical Width, Physical Height資訊

圖表中看出,雖然8 plus, 7 plus, 6s plus都是5.5寸
但是Logical Width, Logical Height, Physical Width, Physical Height不同

而取得手機螢幕的方式有兩種UIScreen.main.nativeBounds或UIScreen.main.bounds,可以參考下篇文章了解之間的差異

實際執行在8 Plus的手機跟模擬器

模擬器

實際手機

真相大白!!!
UIScreen.main.nativeBounds在模擬器跟時機上的數值不同
(看來是模擬器的坑呀…嘖嘖嘖)

如果需透過簡易判斷手機型號
使用UIScreen.main.bounds判斷可確保模擬器與實機畫面相同

--

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Peggy Tsai 

Peggy Tsai 

iOS & Golang 隨手記 www.linkedin.com/in/peggytsaifc 歡迎+Linkedin交流~

More from Medium

Check UITableViewCell currently exists before tableview reloadRows刷新Cell前檢查Cell當下元件是否已生成

How to add Tab into SwiftUI App?

Creating AR Tatooine from Star Wars with Swift and ARKit 5

100 Days of SwiftUI Learning — Day 7