创建一个固定大小的UIView,类似于UISwitch(使用IBDesignable)

13
当我使用这个指南创建一个在XIB中设计的视图,并且在我的UIView子类上使用IBDesignable属性,使其可以从故事板中重用时,如何使它具有固定大小,并且具有与UISwitch等视图相同的调整大小行为?
“调整大小行为”也是指在界面构建器中设计时。
1个回答

12

你可以在你的UIView子类中覆盖intrinsicContentSize()方法。 这样,在界面构建器中就不需要提供高度和宽度约束。

override var intrinsicContentSize: CGSize {
    return CGSizeMake(width: 100, height: 100)
}

如果您只想提供其中一维度,可以使用UIView.noIntrinsicMetric而不是一个值。

override var intrinsicContentSize: CGSize {
    return CGSizeMake(width: UIView.noIntrinsicMetric, height: 100)
}

1
只是一件小事:如果您没有在视图上放置位置约束,则 IB 似乎无法正确呈现大小。这最初让我感到困惑。 - Paul Van Wieren
3
FYI:在 Swift 3 中,Xcode 将签名显示为 override var intrinsicContentSize: CGSize { } - Robotic Cat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接