2015-11-09 21 views
1

我遇到了自動佈局問題,「無法同時滿足約束條件」。錯誤。查找哪個視圖破壞約束條件

現在我已經爲我的所有約束添加了標識符,但是,衝突的約束似乎不是由我創建的,因爲我只在兩個衝突的約束中看到我的標識符。

我的問題是,如果我有約束這樣的描述:

<NSLayoutConstraint:0x7f8dca498410 V:[UIView:0x7f8dca493010]-(0)-[UILabel:0x7f8dca493610]>

我怎麼能找出UIView的,這是和的UILabel這是。我知道我可以做po 0x7f8dca493010,但是如何打印我的視圖的屬性,最好是打印我給IB看法的名字?

+0

分配accessibilitylabel's你的意見的任何代碼,然後打印出它,你可以看到標籤 – ogres

+0

是否有東西,我可以在不編輯所有視圖的情況下獲取?我在那裏有很多。 – Banana

+0

如果你知道屬性的名稱,你總是可以做'po [(UIView *)0x7f8dca493010 propertyName] – Losiowaty

回答

3

使用此命令可以打印所有視圖

(lldb) po [[[UIApplication sharedApplication] keyWindow] recursiveDescription] 

然後命令+ F查找地址

然後,查看調試的幫助左側和日誌定位查看

此外, 如果您熟悉LLDB,你可以執行你想

lldb) e UIView *$view = (UIView *)0x7fb3b248d860 
(lldb) po [$view superview] 
<UIView: 0x7fb3b248d4e0; frame = (0 0; 414 736); autoresize = W+H; layer = <CALayer: 0x7fb3b248cca0>> 
+0

這將如何在Swift中?我嘗試了'po UIApplication.sharedApplication()。keyWindow()。recursiveDescription()',但是我得到了'錯誤:被調用的對象類型'id'不是一個函數或函數指針' – Banana

+0

我測試了一個swift項目,命令I在LLDB發佈作品。你只需要用你發現的地址替換地址 – Leo

+0

哦,你是完全正確的!謝謝! – Banana