我UIView沿着一个容器的底部布置了几个UIView。我希望这些视图的宽度始终相等,并始终拉伸以共同填充包含视图的宽度(如底部的表情符号键盘按钮)。我要解决的方法是为其中一个视图设置相等的宽度,然后仅将该视图的宽度约束更新为,superviewWidth / numberOfViews这将导致所有其他视图更新为相同的值。
UIView
superviewWidth / numberOfViews
我想知道更改约束常数的代码应该放在哪里。需要在键盘首次出现在屏幕上之前进行设置,并在旋转设备时进行更新。
我第一次尝试解决方案是将其放入updateViewConstraints并通过计算宽度containerView.frame.size.width。但是,此方法在加载时会被调用两次,第一次是正确计算值,但是第二次由于某种原因,containerView宽度为0.0。另一个问题是,旋转时,containerView的宽度不是旋转后的值,而是旋转前的当前值。但是我不想等到轮换完成后再更新约束,因为按钮将是原始大小,然后更改,这会给用户带来不便。
updateViewConstraints
containerView.frame.size.width
containerView
我的问题是:在哪里放置此代码最合适?有没有更好的方法来计算宽度是多少?我可以保证它将始终与屏幕宽度完全相同。我在Xcode 6中使用了大小类,因此willRotateToInterfaceOrientation不赞成使用类似的方法。
willRotateToInterfaceOrientation
没有理由手动更新宽度:
然后自动布局将为您处理所有事情。