【发布时间】:2014-09-03 03:58:21
【问题描述】:
我有几个UIViews 位于包含UIView 的底部。我希望这些视图的宽度始终相等,并且始终拉伸以共同填充包含视图的宽度(例如底部的表情符号键盘按钮)。我解决这个问题的方法是为其中一个视图设置相等的宽度,然后将该视图的宽度约束更新为superviewWidth / numberOfViews,这将导致所有其他视图更新为相同的值。
我想知道更改约束常量的代码需要去哪里。需要在键盘第一次出现在屏幕上之前设置,并在旋转设备时更新。
我第一次尝试解决方案是将其放在updateViewConstraints 中并通过containerView.frame.size.width 计算宽度。但是这个方法在加载时被调用了两次,第一次它正确计算了值,但第二次由于某种原因containerView 的宽度是 0.0。另一个问题是,在旋转时,containerView 的宽度不是旋转后的值,而是旋转前的当前值。但我不想等到旋转完成后才更新约束,因为按钮将是原始大小,然后会改变这对用户来说是不和谐的。
我的问题是:在哪里放置这段代码最合适?有没有更好的方法来计算宽度是多少?我可以保证它总是与屏幕宽度完全相同。而且我在 Xcode 6 中使用 Size Classes,因此不推荐使用 willRotateToInterfaceOrientation 和类似方法。
【问题讨论】:
标签: ios uiview rotation swift autolayout