[英]Can I just ignore “Unable to simultaneously satisfy constraints”?
我正在將現有應用更新為自動布局以支持更多設備尺寸。 我有一些需要動畫的對象,而不是使用約束我將它們設置為:
self.secondCounter.translatesAutoresizingMaskIntoConstraints = YES //example
使用舊的setFrame方法。
這似乎工作但在第一個動畫上拋出運行時錯誤:
無法同時滿足約束。 可能至少下列列表中的一個約束是您不想要的約束。 試試這個:(1)看看每個約束並試着找出你不期望的東西; (2)找到添加了不需要的約束或約束的代碼並修復它。 (注意:如果你看到你不理解的NSAutoresizingMaskLayoutConstraints,請參閱UIView屬性translatesAutoresizingMaskIntoConstraints的文檔)(“”,“”,“”)
將嘗試通過打破約束來恢復
在UIViewAlertForUnsatisfiableConstraints上創建一個符號斷點,以便在調試器中捕獲它。 在列出的UIView上的UIConstraintBasedLayoutDebugging類別中的方法也可能有所幫助。 2014-10-07 19:41:12.903 AppName [5018:1153922]無法同時滿足約束條件。 可能至少下列列表中的一個約束是您不想要的約束。 試試這個:(1)看看每個約束並試着找出你不期望的東西; (2)找到添加了不需要的約束或約束的代碼並修復它。 (注意:如果你看到你不理解的NSAutoresizingMaskLayoutConstraints,請參閱UIView屬性translatesAutoresizingMaskIntoConstraints的文檔)(“”,“”,“”)
將嘗試通過打破約束來恢復
在UIViewAlertForUnsatisfiableConstraints上創建一個符號斷點,以便在調試器中捕獲它。 在列出的UIView上的UIConstraintBasedLayoutDebugging類別中的方法也可能有所幫助。
事實上我沒有得到這個消息,因為我沒有在這個對象上設置任何約束(我聽說Xcode在構建時為默認的自動布局xib中的每個視圖設置它們)。
但不知何故,一切看起來都不錯,似乎有效。
我可以忽略此消息,還是稍后會遇到問題?
你肯定會遇到問題,需要解決這個問題。 如果您不滿足所有約束並且運行時更正系統無法“捏造數字”,則可能導致您的應用程序崩潰。 你可以得到像這樣的令人討厭的消息:
Fatal Exception: NSInvalidArgumentException. Unable to create description in descriptionForLayoutAttribute_layoutItem_coefficient. Something is nil
要解決自動布局問題,請執行以下一些簡單步驟:
而已! 查找,修復,測試:)
恕我直言,例外是紅鯡魚。
這些限制是由蘋果隱含的管理。 在某些時候,“那邊”的幾行代碼可以間接地影響它們,因此發現為什么你的代碼在這里引發異常是一件痛苦的事。
在我的情況下,我發現[cell setHidden:YES]繼續並用[cell removeFromSuperview]替換了該代碼,問題就消失了。
.... OO編程的租戶之一是使APIS安全且易於使用。 不容易傷痕累累和困惑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.