一尘不染

frame.size.width和frame.width之间的区别

swift

我当时正在迅速编写程序,而现在我注意到我可以直接访问CGRect框架的width和height属性,而无需使用CGSizewidth和height。那就是我现在能够编写这样的代码。

@IBOutlet var myView: UIView!

override func viewDidLoad()
{
    super.viewDidLoad()
    var height = myView.frame.height
    var height1 = myView.frame.size.height
}

在目标C中,当我尝试编写相同的代码时,该行将height = view.frame.height引发错误。谁能告诉我这两行代码的区别(如果有)。


阅读 533

收藏
2020-07-07

共1个答案

一尘不染

我只是研究了CGRect结构参考。在Swift中,定义了一个扩展,该扩展具有成员heightwidth。请看下面的代码

struct CGRect {
var origin: CGPoint
var size: CGSize
}

extension CGRect {
    ...
    var width: CGFloat { get }
    var height: CGFloat { get }
    ...
}

所以,你可以直接读取height,并width从价值观CGRect。如您所见,这些仅仅是getters,因此,如果尝试使用以下方法设置这些值,则会收到错误消息view.frame.height = someValue

2020-07-07