2015-09-03 90 views
0

我正在創建自定義視圖,並需要更新其方向更改的子視圖框架。要做到這一點,我在父視圖中重寫layoutSubviews。應用程序崩潰佈局佈局在自定義視圖中的子視圖方法iOS 7.0

在layoutSubviews中,我刪除了先前的約束並在其子視圖中添加了新的約束。

我打電話給[super layoutSubviews];首先在重寫方法。它在iOS8以上工作正常,但在iOS 7.0和iOS8以下崩潰。 獲取日誌

Terminated due to uncaught exception 'NSInternalInconsistencyException' reason Auto layout still required after executing layoutSubviews. Parent view's layoutSubviews needs to call super.

如果我叫[super layoutSubviews];以下信息修改約束條件之後,終於在layoutSubviews,其在iOS7和iOS8上的兩個工作即。

我的問題是什麼是重寫layoutSubviews的正確方法。

我做錯了什麼?

我們是否應該在layoutSubviews的子視圖上添加約束。 還是有更好的方法來實現相同的輸出。

回答

0

如果我打電話給[super layoutSubviews];在修改約束之後......它在iOS7和iOS8中都有效。

這是正確的做法 - 你應該修改的約束打電話[super layoutSubviews];之前。這樣AutoLayout考慮到你的更新約束。

+0

好的,謝謝johnpatrickmorgan – user1101733

0

你不會做錯我認爲。正如它錯誤地表示的那樣,當它試圖佈置它的子視圖時,它需要自動佈局約束。所以在你打電話給[super layoutSubviews]之前,你應該處理約束條件。

+0

感謝Candost的評論。 – user1101733

相關問題