ビューのレンダリングには、次の 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()
}
}