我正在使用自定义视图,该视图用作inputAccessoryView
。
它具有一个textView和一个按钮。
随着textView大小的增加,自定义视图的高度也应增加。因此,我在自定义视图中将autoresizingMask
定义为.flexibleHeight
。
但是autoresizingMask
仅在覆盖intrinsicContentSize
时才有效,即使返回值是.zero
。
问题是,是否定义了autoresizingMask
仅对intrinsicContentSize
有效?我想知道它们之间的关系。
还可以通过intrinsicContentSize
而不是autoResizingMask
更新invalidateIntrinsicSize
吗?
示例代码:
final class CommentInputAccessaryView: UIView {
private let commentTextView: UITextView = {
let tv = UITextView()
tv.isScrollEnabled = false
...
return tv
}()
private let commentSubmitButton: UIButton = {
let btn = UIButton(type: .system)
btn.setTitle("Submit", for: .normal)
...
return btn
}()
override var intrinsicContentSize: CGSize {
return CGSize(width: 0, height: 50)
}
init() {
super.init(frame: .zero) // It doesn't matter if the frame size not defined.
...
autoresizingMask = .flexibleHeight
...
}
}