3 回答

TA貢獻1784條經驗 獲得超7個贊
我拋出了很多這樣的異常,我找到解決它們的最快,最簡單的方法是在異常中找到唯一的值,然后在情節提要源代碼中搜索這些異常。這幫助我找到了導致問題的實際視圖和約束(我在所有視圖上使用了有意義的userLabel,這使得跟蹤約束和視圖變得容易得多)...
因此,使用上述例外,我將在xcode(或其他編輯器)中以“源代碼”的形式打開情節提要,并尋找可以找到的東西...
<NSLayoutConstraint:0x72bf860 V:[UILabel:0x72bf7c0(17)]>
..這看起來像UILabel上的垂直(V)約束,值為(17)。
查看例外情況,我也發現
<NSLayoutConstraint:0x72c22b0 V:[UILabel:0x72bf7c0]-(NSSpace(8))-[UIButton:0x886efe0]>
看起來UILabel(0x72bf7c0)接近于UIButton(0x886efe0),并具有一定的垂直間距(8)。
希望這足以讓我在情節提要源代碼中找到特定的視圖(可能是通過最初在文本中搜索“ 17”)或至少一些可能的候選者。從那里,我應該能夠真正找出這些故事在情節提要中的哪些視圖,這將使查找問題變得容易得多(查找“重復的”固定或固定與大小限制沖突的位置)。

TA貢獻1725條經驗 獲得超8個贊
請注意,不要在同一方向和類型上使用多個約束。
例如: 尾隨的垂直約束= 15,而另一個約束> = 10。
有時,Xcode會創建一些您沒有注意到的約束。您必須擺脫冗余約束,日志警告肯定會消失。
另外,您可以直接從日志中讀取和檢測某些特定原因:
NSLayoutConstraint:0xa338390 V:|-(15)-[UILabel:0xa331260](名稱:'|':UILabel:0xa330270)>
這可以理解為UILabel約束中的問題,它導致垂直約束長15pt。
NSLayoutConstraint:0x859ab20 H :-( 13)-| [UIView:0x85a8fb0] ...
這將是尾隨水平約束等。
- 3 回答
- 0 關注
- 2162 瀏覽
添加回答
舉報