2017-03-09 59 views
-1

如何找出誰添加了特定的自動佈局約束?找出誰添加了特定的自動佈局約束

因爲我看到一些我肯定沒有添加的約束。

+0

您是否已將'translatesAutoresizingMaskIntoConstraints'設置爲'false'? – BallpointBen

+0

開始使用故事板和xib來定義約束。你會看到很多這樣的問題會消失。例如,可以通過自動調整掩碼來創建約束。有時可以在當前約束不充分時自動添加約束。 – Sulthan

+0

@BallpointBen,是的。 –

回答

0

如果佈局曖昧不可滿足,你可以把一個象徵性的斷點UIViewAlertForUnsatisfiableConstraints

可以添加含有po [[UIWindow keyWindow] _autolayoutTrace]用於夫特目標C或expr -l objc++ -O -- [[UIWindow keyWindow] _autolayoutTrace]其中自動打印UIView層次結構,以this article desribed一個Debugger Command
您還可以在調試器中使用po $r15來打印「已損壞的約束的詳細描述」或po $r14以獲得「除破壞約束之外添加的所有約束的更詳細描述」,如this article中所述。

如果沒有,你可以設置accessibilityIdentifier爲您UIView(或directly in the IB將在前面的表達式結果顯示(和其他地方也是如此),而不是字符串UIView

1

在斯威夫特你可以看看var identifier: String?。如果它以NS開頭,那麼它是由iOS添加的。

A constraint’s identifier is available in its description. Identifiers that start with NS are reserved by the system. 
+0

如果不是? –

+0

如果標識符爲空,則可能是您通過代碼,故事板或XIB添加的約束 – aahrens