【问题标题】:Wrong bounds in Xcode 9? [duplicate]Xcode 9 中的边界错误? [复制]
【发布时间】:2018-06-30 03:03:15
【问题描述】:

我不知道发生了什么:对于每个模拟器,甚至对于我的 iPhoneX,UIScreen.main.bounds 都是 (0.0, 0.0, 320.0, 480.0)

这是我在AppDelegate 中输入的内容

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    window = UIWindow()
    let vc = LoginViewController()
    let navigationController = UINavigationController(rootViewController: vc)
    self.window?.rootViewController = navigationController
    self.window!.makeKeyAndVisible()
    navigationController.setNavigationBarHidden(true, animated: false)
    return true
}

我多年来一直这样做,但突然间它不起作用了,尤其是在那个应用程序上。怎么回事?

编辑:这是结果

解决方案:不要删除 LaunchScreen.storyboard,UIScreen.main 会以此为基础……

【问题讨论】:

  • 首先你应该设计你的UI,让它不关心实际尺寸,让它适应不同的尺寸而不知道这些尺寸。说了这么多,什么是绿化区?它是视图控制器视图和图像的大小还是其他什么?
  • 不,您应该首先让您的 uiwindow 具有正确的边界。克莱门斯有正确的答案。
  • 你永远不需要直接设置你的根 UIWindow 的边界。
  • 我没说我想设置那些……
  • 您应该能够设计一个完整的应用程序,而无需关心物理 UIScreen 的大小。现在有些情况您可能需要知道,但它们很少见。

标签: ios swift xcode appdelegate


【解决方案1】:

可能的屏幕尺寸在 iOS 中通过启动屏幕图像定义。因此,您应该为每种分辨率创建一个图像,或者为此使用情节提要。

【讨论】:

  • 是的,这就是问题所在,我删除了 LaunchScreen 故事板,这导致了崩溃。谢谢!
  • 如果您不想使用启动屏幕故事板,以防万一其他人看到这一点,您也可以切换为提供启动图像。您必须执行其中一项操作才能设置正确的主屏幕边界。
  • @UpholderOfTruth 请记住,使用启动图像会阻止应用程序支持 iPad 上的多任务处理。为此,您必须使用启动屏幕故事板。
  • 确实不错,但有时这正是您想要的。就个人而言,除非有充分的理由我去启动屏幕故事板,但最好了解这两种方法。
猜你喜欢
  • 2018-12-13
  • 1970-01-01
  • 1970-01-01
  • 2012-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-02
  • 2016-07-11
相关资源
最近更新 更多