为什么UIScreen.bounds在iOS11中不正确

Dav*_*eek 5 swift ios11

请不要标记为重复.可用的线程没有提供答案.行为仅限iOS11.

将项目从Xcode 8更新到Xcode 9,现在使用iOS11但仍然使用Swift 3,我有以下经验:

    print("UIScreen.main.bounds.width = \(UIScreen.main.bounds.width)")
    print("self.view.frame.width = \(self.view.frame.width)")

    let rect = CGRect(

        x: 0,
        y: 0,
        width: UIScreen.main.bounds.width,
        height: UIScreen.main.bounds.height * 0.25

    )
Run Code Online (Sandbox Code Playgroud)

打印:

UIScreen.main.bounds.width = 414.0
self.view.frame.width = 600.0
Run Code Online (Sandbox Code Playgroud)

该视图应该是从屏幕边缘到屏幕边缘.所以我用过UIScreen.main.bounds.width.但是这个值对于实际的视图控制器大小来说太小了self.view.frame.width.

这是为什么?我错过了什么?非常感谢帮助.

物理设备.使用相同的行为UIScreen.main.bounds.width

小智 0

我也遇到了类似的问题,尺寸获取不正确UIScreen.main.bounds。尺寸小于物理屏幕。解决方案是将下一行添加到info.plst中:

钥匙:

Launch screen interface file base name
Run Code Online (Sandbox Code Playgroud)

类型:

String
Run Code Online (Sandbox Code Playgroud)

价值:

LaunchScreen
Run Code Online (Sandbox Code Playgroud)

因此,请检查您的info.plist以查看它是否包含此行。如果不是,只需添加它即可。希望这可以帮助。 info.plst 的屏幕截图