我知道渲染视图按以下顺序执行以下 3 个步骤:
- 更新约束
- 布局视图(这里是我们计算帧的地方)
- 展示
现在我的问题是,如果我修改自定义按钮的高度,并且该按钮与周围的视图有约束,我该如何更新该约束并避免与视图重叠?您可以看到注释行,它们都不起作用。
class DynamicHeightButton: UIButton {
override func layoutSubviews() {
super.layoutSubviews()
let size = (self.titleForState(UIControlState.Normal)! as NSString).boundingRectWithSize(CGSizeMake(self.bounds.size.width, CGFloat.max), options: NSStringDrawingOptions.UsesLineFragmentOrigin, attributes: [NSFontAttributeName : UIFont.systemFontOfSize(17)], context: nil)
self.bounds.size.height = size.height + 8
//viewController!.view.setNeedsUpdateConstraints()
//self.setNeedsUpdateConstraints()
//self.setNeedsLayout()
}
}