你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發基礎 >> 調試autolayout:_autolayoutTrace

調試autolayout:_autolayoutTrace

編輯:IOS開發基礎

本文為投稿文章,原文

前言

autolayout玩的不溜?autolayout不熟悉?

不用擔心本篇文章就是介紹一下筆者在工作中調試autolayout的一個小技巧而已,於autolayout本身技術並無太大關聯。廢話不多說,讓我們一起來探險吧。

來認識一下

在UIWindow裡有一個名為_autolayoutTrace的私有方法,該方法返回值是一個字符串,而這個字符串則是包含了UIWindow中整個視圖的層次結構。而在約束這一塊有問題的視圖,_autolayoutTrace會使用AMBIGUOUS layout標記出視圖並告知你缺少或者某些約束。所以一般情況下用_autolayoutTrace來調試約束,筆者建議直接在控制台搜索是否存在AMBIGUOUS字符來判斷約束是否有問題。

動手練一練

使用該方法最好的方式就是在控制器完全加載完了,並在模擬器或者iPhone上能看到視圖了,然後讓程序暫停(pause program execution)並在控制台輸入po [[UIWindow keyWindow] _autolayoutTrace]在按下回車鍵,你就能看見神奇的一刻了。

660127-2fbac0a612854854.jpg

暫停app的效果圖(pause program execution)

.lldbinit

到目前為止雖然我們想要的效果實現了。但是,po [[UIWindow keyWindow] _autolayoutTrace]在控制台輸入的時候並未有單詞提示,不過好在這條命令很好記。當然也還有一個更高級的玩法,就是在.lldbinit裡為這個命令設置一個別名。之前我寫的文章裡也三番五次的介紹過.lldbinit了,所以在此不再過多贅述,簡單描述就是Xcode啟動的時候會去找這個文件,而我們可以在這個文件裡進行一些LLDB命令的初始化,比如設置別名等。

在此,我們創建一個.lldbinit文件,打開你的終端(terminal)輸入touch ~/.lldbinit命令,然後在open ~/.lldbinit,不出意外的話文本編輯器打開,然後在此設置別名,在文本編輯裡輸入command alias zxp_autolayout_trace po (id)[[UIWindow keyWindow] _autolayoutTrace]即可。

  1. 如果你之前存在.lldbinit這個文件,當你輸入touch ~/.lldbinit並不會造成任何影響,所以在此放心使用這條命令。

  2. 而以上在文本編輯器裡的字符串zxp_autolayout_trace 這是我設置的別名,你們也可以把這個改成你們自己想要的名字。

  3. 或許你們發現了po (id)[[UIWindow keyWindow] _autolayoutTrace]這裡顯示的指定了返回值,因為之前就有說過此方法返回值是一個字符串,如果不顯示指定返回值則在這兒是不生效的。所以就返回了一個id類型。

到目前為止別名就設置完了,在控制台裡就不需要在輸入po [[UIWindow keyWindow] _autolayoutTrace]這條難看又長的命令了。而是直接輸入你設置的別名即可,並且還有單詞提示哦。

PS:如上步驟我設置的別名是zxp_autolayout_trace所以在控制台裡輸入zxp_autolayout_trace即可。

結語

如果你覺得布局和預期的有點不一樣,或者無法確定自己寫的約束布局是否正確,那或許你可以試試這個好玩的小技巧。

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved