2015-11-06 45 views
3

的若干意见在UIStackView一个UIStackView调整视图的大小被调整为适合堆叠。视图被初始化而没有帧,因为它们被堆栈视图调整大小。有没有办法让我得到的意见的大小,他们已经被堆叠视图大小以后?查找通过迅速

回答

3

的尺寸后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. 
    } 
} 
+0

这并不总是正确的,很遗憾。我遇到的许多情况下,安排子视图的几何形状是** super.layoutSubviews后'不正确的**()'。在我的具体情况中,我总是必须在下一次运行循环中检查它们,这很荒谬。 – LucasTizma

0

我认为更好的方式来获得Stackview的子视图框架是使用convert

yourStackView.convert(viewInsideStackView.frame to: parentView) 

这将返回viewInsideStackView的框架内parentView的坐标系统。