如何检索计算出的UIView
的高度/宽度是使用NSConstraint
允许的高度和/或宽度?
换个解释:我想在使用自动布局和约束对元素进行布局后检索UIView's
"宽度"或"高度"的CGFloat
值。
当您确定您的视图完全由布局系统布局时,没有特别的意义。但是,在每个布局周期之后都会调用一些方法。
因此,如果您的textField
是自定义类或自定义UIView
的一部分,例如UITableViewCell
,则此方法将layoutSubviews
。在此护理中,您可以使用以下代码获取大小:
override func layoutSubviews() {
super.layoutSubviews()
textWidth = textField.frame.width
textHeight = textField.frame.height
}
每次布局发生变化(如方向更改或其他一些元素更改其框架或约束)时,此代码都会为您提供正确的值。
如果您没有自定义视图,但您在UIViewController
中直接使用 textField,则该方法为 viewDidLayoutSubviews
。在视图控制器完成整个视图层次结构的布局后,将调用此函数。
override func viewDidLayoutSubviews() {
super.layoutSubviews()
textWidth = textField.frame.width
textHeight = textField.frame.height
}
如果我可以进一步帮助您,或者您还有其他问题,请告诉我。希望这对您的实施有所帮助。
以下是根据视图内容获得高度和宽度的方法
let adjustedWidth = anyView.intrinsicContentSize.width
let adjustedHeight = anyView.intrinsicContentSize.height
如果视图受到限制,则可以使用以下方法获取其"合适"大小:
let size = view.systemLayoutSizeFitting(UILayoutFittingCompressedSize)
如果得到无效值,则表示您的视图不受约束,或者您正在为其父视图布局之前调用它。