获取自定义控件的内在高度

时间:2016-10-16 00:29:02

标签: ios swift3

如何获得自定义控件的高度?

我的想法是用它动态设置自定义控件中某些按钮的高度。我在Xcode大小检查器中将占位符高度设置为44。

enter image description here

使用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)        
    }
    ...

2 个答案:

答案 0 :(得分:2)

您永远不应在frame内访问intrinsicContentSizeintrinsicContentSize应返回完全符合视图内容的大小,无论其当前帧如何。

在您的情况下,我认为您可以使用44 buttonSize

答案 1 :(得分:1)

占位符内在大小就是占位符,因此IB解释器具有一些可以使用的值,并且可以布局场景的其余部分。但是在你的intrinsicContentSize getter中,你实现了实际大小,它将在运行时由AutoLayout引擎使用。由于您返回1000作为内在内容高度,这就是您将在运行时看到的内容。