簡體   English   中英

我可以忽略“無法同時滿足約束”嗎?

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

要解決自動布局問題,請執行以下一些簡單步驟:

  1. 找到具有違規布局的視圖。 它們將在右上角的故事板對象左側列表中通過視圖控制器的名稱顯示黃色或紅色圖標:

黃色圖標是你的向導......

  1. 通過更改框架,約束或添加新約束來解決問題。 這些問題本身都有一個解釋,你可以在這里找到一個很好的教程: https//developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/ResolvingIssues/ResolvingIssues.html
  2. 當您解決了所有問題后,請確保進行測試! 在模擬器和iPad(如果適用)下測試iPhone 4,5,6和6 Plus尺寸下的視圖。 另外,一定要在iOS 7和8下進行測試 - 在iOS 8中可以使用一些autolayout約定,但是iOS 7應用程序崩潰了。 (學到了很難...)

而已! 查找,修復,測試:)

恕我直言,例外是紅鯡魚。

這些限制是由蘋果隱含的管理。 在某些時候,“那邊”的幾行代碼可以間接地影響它們,因此發現為什么你的代碼在這里引發異常是一件痛苦的事。

在我的情況下,我發現[cell setHidden:YES]繼續並用[cell removeFromSuperview]替換了該代碼,問題就消失了。

.... OO編程的租戶之一是使APIS安全且易於使用。 不容易傷痕累累和困惑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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