gpt4 book ai didi

ios - UIView的frame.height和frame.size.height有什么区别?

转载 作者:可可西里 更新时间:2023-10-31 23:57:28 38 4
gpt4 key购买 nike

我不明白 UIViewframe.heightframe.size.height 有什么区别。为什么要添加 size?例如:

override func viewDidLoad() {
super.viewDidLoad()

scrollView.contentSize.height = self.view.frame.height
scrollViewHeight = scrollView.frame.size.height
}

最佳答案

这一切都始于 Objective-C 和 CGRect。它只有两个属性 - originsizesize 是一个 CGSize,它又具有 height 属性。因此,在 Objective-C 中使用以下方法获取框架的高度很常见:

CGFloat height = frame.size.height;

从技术上讲,正确的解决方案(以获得适当的标准化高度)是使用:

CGFloat height = CGRectGetHeight(frame);

然后 Swift 出现了,CGRect 变成了 Swift struct。虽然它还有一个类型为 CGSizesize 属性,后者又具有一个 height 属性,但 Swift CGRect 具有height 属性。在 Swift 中,上面的两行变成:

let height = frame.size.height;

let height = frame.height;

在大多数情况下,这两种获取框架高度的方法没有区别。但是如果 frame 的高度为负数,那就有区别了。

例子:

let rect = CGRect(x: 0, y: 0, width: 320, height: -40)
print(rect.height) // 40
print(rect.size.height) // -40

访问 size.height 会给出创建 CGRect 时使用的原始值。 Access height 给出高度的标准化值。

在大多数情况下,您应该使用 height 属性而不是 size.height。但更重要的是,要保持一致。您问题中的代码不一致。

关于ios - UIView的frame.height和frame.size.height有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48724932/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com