调整aUIStackView
中的许多视图以适应堆栈。视图初始化时没有框架,因为它们由堆栈视图调整大小。有没有一种方法可以在堆栈视图调整视图大小后获取视图的大小?
问问题
2933 次
3 回答
5
尺寸在UIStackView.layoutSubviews()
完成后可用。您可以继承UIStackView
和覆盖layoutSubviews
:
class MyStackView: UIStackView {
override func layoutSubviews() {
super.layoutSubviews()
print("arrangedSubviews now have correct frames")
// Post a notification...
// Call a method on an outlet...
// etc.
}
}
于 2015-11-06T03:21:06.387 回答
2
是的。在您的视图中layoutSubviews()
。但是,您需要先强制 UIStackView 进行布局,stack.layoutIfNeeded()
然后再使用它的大小。
例如:
public override func layoutSubviews() {
super.layoutSubviews()
// Force the UIStackView to layout, in order to get the updated width.
stack.layoutIfNeeded()
let tabWidth = stack.arrangedSubviews[0].frame.size.width
}
于 2020-05-12T12:33:40.810 回答
0
我认为获得 Stackview 的子视图框架的更好方法是使用convert
.
yourStackView.convert(viewInsideStackView.frame to: parentView)
这将返回'坐标系viewInsideStackView
内的 ' 框架。parentView
于 2017-02-28T21:01:12.410 回答