[英]custom method in custom view for subview layout, or use of layoutSubviews/layoutIfNeeded
[英]Application getting crash on overriding layoutSubviews method in custom view iOS 7.0
我正在創建一個自定義視圖,並且需要在方向更改時更新其子視圖框架。 為此,我要在父視圖中覆蓋layoutSubviews。
在layoutSubviews中,我要刪除以前的約束,並為其子視圖添加新的約束。
我打電話給[super layoutSubviews];
覆蓋方法中的first。 它在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中的子視圖上添加約束。 還是有其他更好的方法來實現相同的輸出。
我認為您沒有做錯事情。 就像錯誤地指出的那樣,當它嘗試對其子視圖進行布局時,需要自動布局約束。 因此,在調用[super layoutSubviews]
,應先處理約束條件。
如果我叫[super layoutSubviews]; 修改約束后...在iOS7和iOS8中都可以使用。
那是正確的方法-您應該在調用[super layoutSubviews];
之前修改約束[super layoutSubviews];
。 這樣,“自動版式”將考慮您更新的約束。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.