如何获得自定义控件的高度?
我的想法是用它动态设置自定义控件中某些按钮的高度。我在Xcode大小检查器中将占位符高度设置为44。
使用Apple的Start Developing iOS Apps (Swift)教程,我正在尝试访问frame.size.height
,它的值为1000,而教程似乎表明它应该是44。
class RatingControl: UIView {
...
override public var intrinsicContentSize: CGSize {
let buttonSize = Int(frame.size.height)
print(buttonSize) // prints 1000
let width = (buttonSize * starCount) + (spacing * (starCount - 1))
return CGSize(width: width, height: buttonSize)
}
...
答案 0 :(得分:2)
您永远不应在frame
内访问intrinsicContentSize
。 intrinsicContentSize
应返回完全符合视图内容的大小,无论其当前帧如何。
在您的情况下,我认为您可以使用44 buttonSize
。
答案 1 :(得分:1)
占位符内在大小就是占位符,因此IB解释器具有一些可以使用的值,并且可以布局场景的其余部分。但是在你的intrinsicContentSize
getter中,你实现了实际大小,它将在运行时由AutoLayout引擎使用。由于您返回1000作为内在内容高度,这就是您将在运行时看到的内容。