我有几个UIView
沿着包含UIView
的底部布置。我希望这些视图的宽度始终相等,并且总是伸展以共同填充包含视图的宽度(如底部的表情符号键盘按钮)。我接近这个的方式是将相等宽度设置为其中一个视图,然后将该视图的宽度约束更新为superviewWidth/numberOfViews
,这将导致所有其他视图更新为相同的值。尺寸变化时何处更新Autolayout约束?
我想知道在哪里更改约束常量的代码需要去。它需要在键盘首次出现在屏幕上之前进行设置,并在旋转设备时进行更新。
我第一次尝试解决方案是将其放在updateViewConstraints
中,并通过containerView.frame.size.width
计算宽度。但是这种方法在加载时被调用两次,第一次正确计算值,但由于某种原因第二次是0.035。另一个问题是,旋转时,containerView
的宽度不是旋转后的值,而是旋转前的当前值。但我不想等到旋转完成后才更新约束,因为这些按钮将是原始大小,然后会改变,这会对用户产生不协调的影响。
我的问题是:哪里是最适合放这段代码的地方?有没有更好的方法来计算宽度会是什么?我可以保证它总是和屏幕宽度一样的宽度。我在Xcode 6中使用了Size Classes,所以不建议使用willRotateToInterfaceOrientation
和类似的方法。
谢谢您提出更好的解决方案!精美的工作。 – Joey