UIView固定框架

UIView fixed frame

我制作了一个自定义视图,我希望该视图的大小固定。
就像 UISwitch 一样,你甚至不能改变高度和宽度值。
或者像 UILabel。我想将视图添加到情节提要中而不添加任何高度或宽度约束并且没有丢失约束错误。
我已经重写了 intrinsicContentSize,但我仍然收到缺少约束的错误。
有什么方法可以使甚至不获取值的视图的高度和宽度保持不变?

简单的解决方案

您可以覆盖 intrinsicContentSize 变量和 return 视图的固定大小。

所以像这样的东西应该在你的自定义视图中工作 class:

override var intrinsicContentSize: CGSize {
    return CGSize(width: <Your width>, height: <Your height>)
}

更高级

添加 intrinsicContentSize 会起作用,但如果用户添加高度约束,它可能会使视图混淆或更改视图的高度以匹配约束。如果您知道 自定义视图的高度不应更改,那么您可以从视图中手动更改高度限制。

override func updateConstraints() {
    super.updateConstraints()
        
    if let constraint = self.constraints.first(where: { constraint in
        return constraint.isActive && constraint.firstAttribute == .height
    }) {
       constraint.constant = <Height of View>
    }
}

理想情况下,你最好不要添加它,但我只是在这里添加它,所以如果有人需要它,它是一个选项。