【发布时间】:2017-11-29 00:05:22
【问题描述】:
我创建了一个基于 xib 文件的自定义 UIView 并添加了一些带有约束的 UIVIews。
在我的视图控制器中,我添加了一个 UIView 并将该类设置为我的自定义视图。到现在为止还挺好。我的自定义视图显示正确。
但现在我确实有一个@IBInspectable (numerOfButtons: Int) 并且基于这个数字我想以编程方式将 UIButtons 添加到我的自定义视图中。 我现在的问题是,我想将此按钮与自定义视图中的子视图对齐。所以我尝试以编程方式设置我的按钮框架。但是当我在 layoutSubviews() 中执行此操作时,我的子视图不是根据我的自动布局约束计算的。我试图调用我的子视图的 setNeedsLayout() 和 layoutIfNeeded() 但这不起作用。
如何在 layoutSubviews() 中获取子视图的正确帧(通过计算约束)与它们一起使用
或者我做错了什么?
顺便说一句。看来我的方法只有在我尝试使用 iPad Pro 9.7 英寸模拟器运行时才有效?!
【问题讨论】:
-
您应该使用堆栈视图,而不是自己计算帧。 developer.apple.com/videos/play/wwdc2015/218 和 developer.apple.com/videos/play/wwdc2015/219 值得一看
-
这并不能解决我的问题,因为按钮不是我要基于 numberOfButtons 添加的唯一控件。我还想更改滚动视图的 contentSize 并将视图添加到此滚动视图。在那里我不能使用堆栈视图。这就是我试图弄清楚如何获取计算帧的原因。
标签: swift uiview autolayout