UIScreen.main.bounds 返回不正确的尺寸

UIScreen.main.bounds returning incorrect size

UIScreen.main.bounds.width 和 UIScreen.main.bounds.height 都是错误的。它返回 414x736,但应该约为 360x640。 设备:iPhone 8 Plus。

这取决于你什么时候调用函数。

必须在View完全出现后调用

override func viewDidLoad() { // Or viewDidAppear()
{
    let frame = self.view.bounds; // or UIScreen.main.bounds also works
}

如果在 viewWillAppear 上调用该函数,您将获得不同的值。

iPhone [Any] 由于屏幕没有足够的像素来显示 @3x 直到 iPhone X 到达,加上本机渲染分辨率被下采样 ÷1.15。

屏幕分辨率为 360x640 物理点,但屏幕渲染为 414x736 软件点。这只发生在 Plus 型号上。

414 ÷ 1.15 = 360
736 ÷ 1.15 = 640

看看这个:https://www.paintcodeapp.com/news/iphone-6-screens-demystified