兩種方法快速定位使用Masonry布局時出現(xiàn)的約束警告

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

如何定位出錯的是哪個控件約束呢?

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

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

不過還有另一種方法:就是使用Masonry自帶的 MASAttachKeys 宏來給view添加key,然后有約束警告的話就會知道具體哪個View布局有問題。

UIButton *btn1 = [UIButton buttonWithType:UIButtonTypeCustom ];
btn1.backgroundColor = [UIColor redColor];
MASAttachKeys(btn1);//Masonry 布局沖突快速定位,設(shè)置key必須在布局之前設(shè)置,否則無效!
//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));
}];

控制臺打?。?/p>

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

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

最后編輯于
?著作權(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ù)。

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