簡體   English   中英

應用程序在自定義視圖iOS 7.0中的覆蓋layoutSubviews方法上崩潰

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM