我在Xcode 7中使用Autolayout並定位到iOS 9.3。我有一個主視圖控制器,它擁有一個容器視圖。容器視圖包含一個子視圖控制器。Swift:容器視圖佈局在旋轉並再次旋轉時發生變化
容器視圖的前導和尾隨約束爲-20,因此它完全在水平方向上覆蓋主視圖控制器。
然而,當主視圖控制器第一次加載時,容器內顯示的子視圖控制器的內容在左側和右側略微切斷(就好像它不識別約束在-20左右)。
當我將設備旋轉到橫向,然後再次回到原始縱向時,子視圖控制器突然正確縮放,不再在左側和右側切斷。
所以看起來像是一些佈局方法在將設備側向旋轉並將其旋轉回來時被調用,這種方法在視圖第一次加載時不會被調用。這可能是什麼方法?有沒有辦法,我可以手動調用此方法來強制更新佈局/大小,當孩子第一次加載,以便它看起來像旋轉和向後旋轉後相同?
請顯示codez。根據我對自動佈局的經驗,你應該總是懷疑你的代碼是這種情況下的罪魁禍首,所以最可能發生的事情是你的約束設置不是你想象的那樣,但是如果沒有看到代碼就不能多說。 – lawicko
您可以在視圖上調用'layoutIfNeeded()'來觸發佈局的更新。至於你正在尋找的方法:假設你沒有使用旋轉方法,方向改變觸發的方法將是'viewWillTransitionToSize:' – sketchyTech
我已經嘗試調用Container視圖的viewDidAppear方法中的layoutIfNeeded()。我也嘗試在子視圖控制器的viewDidAppear方法中調用它,但這沒有效果。 – Stanley