这是我想做的事情:

class ViewController: UIViewController {
let screenRect: CGRect = UIScreen.mainScreen().bounds
let screenWidth = screenRect.width;
let screenHeight = screenRect.height;
let screenX = screenRect.origin.x
let screenY = screenRect.origin.y
override func viewDidLoad() {
...and so on

Swift让我声明screenRect

但是,它不允许我使用此声明任何其他常量。它向我显示错误:'ViewController.Type' does not have a member named 'screenRect'
我如何定义这些常量,以及为什么不迅速允许我使用另一个常量来定义它们。

最佳答案

const不了解其他全局const,因为此时尚未对其进行初始化。但是,您可以做的是使用计算属性:

class ViewController: UIViewController {
  var screenRect: CGRect { return UIScreen.mainScreen().bounds }
  var screenWidth: CGFloat { return self.screenRect.origin.x }
}

由于其性质,这仅适用于vars。应该根据使用情况来考虑。如果必须经常调用它,那么就性能而言,这可能不是最明智的方法。

08-27 01:28