iOS布局那些坑(1)

iOS開發(fā)中,在界面布局時候會遇到一些莫名其妙的bug,各個地方都沒有違反正常規(guī)則,不管斷點(diǎn)跟蹤還是打印,還是通過debug view hierarchy,跟蹤下來,并沒有發(fā)現(xiàn)異常,但最終輸出結(jié)果就是出現(xiàn)問題。這個時候,除了其他調(diào)試方法之后,最好還是需要考慮2個方面的因素。

1.布局約束沖突 (主要講 Masonry)

Masonry約束,如果同樣的約束寫了2次,比如說寬度設(shè)置了2次,每次設(shè)置的值不同,這時候就沖突了。而不是像設(shè)置frame那樣,最后設(shè)置的值是有效值。這種約束沖突,xcode是不會給你報錯的。小編曾經(jīng)在這個地方掉過坑,整了半天才搞明白。(主要是小編道行實(shí)在太淺,沒有仔細(xì)研究并看debug view hierarchy里面的提示,實(shí)在活該卡了很久。)

2.命名不規(guī)范

frame方式進(jìn)行布局的時候,有時候會保存frame的值,進(jìn)行一些界面調(diào)整。假如成員變量命名為frame,這個時候項目中使用self.frame時候,UI界面混亂,不是你想要的。你檢查他的布局的時候,不管斷點(diǎn)跟蹤還是打印還是debug view hierarchy里面看值,都正常,但是現(xiàn)實(shí)中他顯示的位置就是不對。這個時候,你會懷疑是不是大蘋果自己的bug?但是這個不可能吧。如果你能懷疑到是不是蘋果的bug的時候,就該想到自己是不是違規(guī)操作了,比如命名問題。不管是其他變量還是一些方法名命名等等,最好不要與C,OC 這些系統(tǒng)關(guān)鍵字以及方法同名,這樣,你會遇到預(yù)想不到的bug。

具體舉幾個例子,變量開頭不要已關(guān)鍵字開頭,比如new ?id frame 等等。

@property (nonatomic, assign) CGRect frame; ? 這樣寫,你就掉坑了,(這個坑,實(shí)在太傷我了 ~~~~(>_<)~~~~ ? ,走過的路過的,千萬躲過呀。。。)

@property (nonatomic, assign) CGRect tempFrame;? 這樣寫,恭喜你,躲過坑了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容