iOS Masonry使用總結(jié)

  1. Masonry布局定位約束沖突

視圖布局添加約束的時(shí)候,有的時(shí)候會(huì)報(bào)一對(duì)約束沖突:
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 == 。。。
有的時(shí)候,通過(guò)控制臺(tái)打印,能夠大致看出哪個(gè)子控件出現(xiàn)了問(wèn)題,但是當(dāng)視圖控件和層級(jí)比較多時(shí),就難以分辨。

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

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

添加Symbolic Breakpoint

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

在symbol欄添加 UIViewAlertForUnsatisfiableConstraints

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

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

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

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

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

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

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

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

效果如下:


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

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

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