使用Masonry框架對(duì)控件設(shè)置約束后運(yùn)行崩潰的解決辦法

console報(bào)錯(cuò)信息

couldn't find a common superview for <UIScrollView: 0x7fb8a401ac00; frame = (0 0; 0 0); clipsToBounds = YES; gestureRecognizers = <NSArray: 0x7fb8a3c17990>; layer = <CALayer: 0x7fb8a3c235a0>; contentOffset: {0, 0}; contentSize: {0, 0}> and <UIView: 0x7fb8a3c1c970; frame = (0 0; 375 667); autoresize = W+H; layer = <CALayer: 0x7fb8a3c15ff0>>



原因

不能為scrollView找到父視圖,原因?yàn)楫?dāng)scrollView被創(chuàng)建后,使用masonry對(duì)scrollView進(jìn)行設(shè)置約束(constrains)時(shí)會(huì)找視圖進(jìn)行參考,我們這里是以其父視圖view進(jìn)行參考,但此時(shí)scrollView并未添加到view中,所以運(yùn)行會(huì)直接崩掉,解決辦法為使添加到父控件的代碼優(yōu)先執(zhí)行即可。

原代碼:

scrollView.backgroundColor = [UIColor brownColor];    
[scrollView mas_makeConstraints:^(MASConstraintMaker *make) 
{
       make.size.mas_equalTo(self.view);    
}];
[self.view addSubview:scrollView];```

####改正后:
```UIScrollView *scrollView = UIScrollView.new;
[self.view addSubview:scrollView];  //從尾部提高到此處
scrollView.backgroundColor = [UIColor brownColor];    
[scrollView mas_makeConstraints:^(MASConstraintMaker *make) 
{
      make.size.mas_equalTo(self.view);
}];```
最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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