masonry快速定位沖突辦法

前言:相信很多小伙伴在使用Masonry布局都會(huì)遇到這種無(wú)問(wèn)題:頁(yè)面通常也會(huì)正常顯示,控制臺(tái)會(huì)打印出一堆警告的信息,看著很是頭疼。

如何定位出錯(cuò)的是哪個(gè)控件約束呢?

微博上看到Lefe_x#iOS知識(shí)小集#里面的一篇 「 如何快速定位哪個(gè) View 出現(xiàn)了約束警告? 」 解決方法:
就是把 View 的內(nèi)存地址換成了具體的 View,其實(shí)我們可以通過(guò) Xcode 中的 【Debug View Hierarchy】,根據(jù)約束警告的內(nèi)存地址(比如:0x147f56930)找到內(nèi)存地址對(duì)應(yīng)的 View(),把內(nèi)存地址粘貼到搜索框,然后一樣做替換操作,即可解決約束警告。

這個(gè)【Debug View Hierarchy】(不明白的小伙伴點(diǎn)擊這個(gè))也就是Xcode自帶的視圖調(diào)試功能,可以讓開(kāi)發(fā)者看到視圖的層次,控件的大小和位置,而且會(huì)以3D效果顯示當(dāng)前視圖的層次。

不過(guò)還有另一種方法:就是使用Masonry自帶的 MASAttachKeys 宏來(lái)給view添加key,然后有約束警告的話就會(huì)知道具體哪個(gè)View布局有問(wèn)題。

UIButton *btn1 = [UIButton buttonWithType:UIButtonTypeCustom ];
btn1.backgroundColor = [UIColor redColor];
MASAttachKeys(btn1);//Masonry 布局沖突快速定位,設(shè)置key必須在布局之前設(shè)置,否則無(wú)效!
//btn1.mas_key = @"btn1"; 或者這樣設(shè)置
[self.view addSubview:btn1];
[btn1 mas_makeConstraints:^(MASConstraintMaker *make) {
    make.left.top.offset(80);
    make.size.mas_equalTo(CGSizeMake(100, 100));
}];
//    制造約束沖突
[btn1 mas_makeConstraints:^(MASConstraintMaker *make) {
    make.left.top.offset(100);
    make.size.mas_equalTo(CGSizeMake(100, 100));
}];

控制臺(tái)打?。?/p>

(
"<MASLayoutConstraint:0x6000000b1640 UIButton:btn1.left == UIView:0x7ff608e02720.left + 80>",
"<MASLayoutConstraint:0x6000000b1d60 UIButton:btn1.left == UIView:0x7ff608e02720.left + 100>"
)

于是乎。。。。,修改吧,去掉那些煩人??的約束警告。

來(lái)源:Dxc_iOS

?著作權(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)容