alv*_*123 2 cocoa-touch ios cgrect swift
我不明白,不同的是在什么UIView之间frame.height和frame.size.height.为什么要加size?例如:
override func viewDidLoad() {
super.viewDidLoad()
scrollView.contentSize.height = self.view.frame.height
scrollViewHeight = scrollView.frame.size.height
}
Run Code Online (Sandbox Code Playgroud)
这一切都始于Objective-C和CGRect.它只有两个属性 - origin和size.size是一个CGSize反过来height有财产.所以在Objective-C中常见的是使用以下方法获取帧的高度:
CGFloat height = frame.size.height;
Run Code Online (Sandbox Code Playgroud)
从技术上讲,正确的解决方案(获得正确的标准化高度)是使用:
CGFloat height = CGRectGetHeight(frame);
Run Code Online (Sandbox Code Playgroud)
然后斯威夫特出现并CGRect成为斯威夫特struct.虽然它也有一个size属性,而这个属性CGSize又有一个height属性,Swift CGRect有一个height属性.在Swift中,上面的两行成为:
let height = frame.size.height;
Run Code Online (Sandbox Code Playgroud)
和
let height = frame.height;
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,获得帧高度的两种方法之间没有区别.但是如果框架具有负高度则存在差异.
例:
let rect = CGRect(x: 0, y: 0, width: 320, height: -40)
print(rect.height) // 40
print(rect.size.height) // -40
Run Code Online (Sandbox Code Playgroud)
访问size.height提供CGRect创建时使用的原始值.Access height提供高度的标准化值.
在大多数情况下,您应该使用该height属性而不是size.height.但更重要的是,要保持一致.您问题中的代码不一致.
| 归档时间: |
|
| 查看次数: |
959 次 |
| 最近记录: |