UIScreen.main.bounds.width 在 Swift 3 中返回 nil

UIScreen.main.bounds.width returning nil in Swift 3

在我的项目中,我搞砸了两个版本的应用程序。我可能复制了项目文件并产生了问题。这条线

myLogo.frame.size.width = UIScreen.main.bounds.width

表明,UIScreen.main.bounds.width returns 为零。这怎么可能呢?

fatal error: unexpectedly found nil while unwrapping an Optional value

可能是什么原因,我该如何修复?

我正在研究最新的 Xcode 并在 Swift 中写作 3.

确保 myLogo 连接到您的故事板(myLogo 声明左侧的小点应该是黑色的)。然后像这样设置它的框架宽度 属性:

    let width = UIScreen.main.bounds.width
    let r = myLogo.frame
    myLogo.frame = CGRect(x: r.origin.x, y: r.origin.y, width: width, height: r.height)

在使用 auto-layout 的 Interface Builder 中这样做可能会更好,因此 myLogo 的宽度被限制为设备的宽度。

这里有一个 useful extension 可让您调整 UIView 框架的各个属性,例如

myLogo.width = UIScreen.main.bounds.width