我有幾個UIView
沿着包含UIView
的底部佈置。我希望這些視圖的寬度始終相等,並且總是伸展以共同填充包含視圖的寬度(如底部的表情符號鍵盤按鈕)。我接近這個的方式是將相等寬度設置爲其中一個視圖,然後將該視圖的寬度約束更新爲superviewWidth/numberOfViews
,這將導致所有其他視圖更新爲相同的值。尺寸變化時何處更新Autolayout約束?
我想知道在哪裏更改約束常量的代碼需要去。它需要在鍵盤首次出現在屏幕上之前進行設置,並在旋轉設備時進行更新。
我第一次嘗試解決方案是將其放在updateViewConstraints
中,並通過containerView.frame.size.width
計算寬度。但是這種方法在加載時被調用兩次,第一次正確計算值,但由於某種原因第二次是0.035。另一個問題是,旋轉時,containerView
的寬度不是旋轉後的值,而是旋轉前的當前值。但我不想等到旋轉完成後才更新約束,因爲這些按鈕將是原始大小,然後會改變,這會對用戶產生不協調的影響。
我的問題是:哪裏是最適合放這段代碼的地方?有沒有更好的方法來計算寬度會是什麼?我可以保證它總是和屏幕寬度一樣的寬度。我在Xcode 6中使用了Size Classes,所以不建議使用willRotateToInterfaceOrientation
和類似的方法。
謝謝您提出更好的解決方案!精美的工作。 – Joey