iOS Masonry使用總結(jié)

  1. Masonry布局定位約束沖突

視圖布局添加約束的時候,有的時候會報一對約束沖突:
Probably at least one of the constraints in the following list is one you don't want.
Try this:
(1) look at each constraint and try to figure out which you don't expect;
(2) find the code that added the unwanted constraint or constraints and fix it.

"<MASLayoutConstraint:0x28244a340 UILabel:0x13b80b190.top == 。。。
有的時候,通過控制臺打印,能夠大致看出哪個子控件出現(xiàn)了問題,但是當(dāng)視圖控件和層級比較多時,就難以分辨。

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
這個時候我們可以通過添加斷點的方式,在查看定位約束沖突。步驟:

屏幕快照 2019-12-06 下午3.26.49.png

添加Symbolic Breakpoint

屏幕快照 2019-12-06 下午3.29.09.png

在symbol欄添加 UIViewAlertForUnsatisfiableConstraints

在Action欄 添加po [[UIWindow keyWindow] _autolayoutTrace]

此時重新運行工程,打開出現(xiàn)約束沖突的頁面,控制臺就會打印出視圖各層級以及地址,通過約束沖突的控件地址對比,就能找到相應(yīng)的視圖控件。

屏幕快照 2019-12-06 下午3.34.20.png

NSAutoresizingMaskLayoutConstraint 約束導(dǎo)致的約束沖突:self.translatesAutoresizingMaskIntoConstraints = NO;

  1. Masonry約束優(yōu)先級的設(shè)置

開發(fā)的時候,有的時候會遇到一行出現(xiàn)兩種文本展示框,約束添加不好,就會達(dá)不到想要的效果。

屏幕快照 2019-12-06 下午3.37.21.png

通過以上代碼,可以設(shè)置在同一行的文本框優(yōu)先展示哪一個文本框的內(nèi)容。然后可以根據(jù)現(xiàn)有項目的需要,來進(jìn)行設(shè)置。

效果如下:


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

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

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