在的storyboard的tableview中使用了xib自定義的cell,但顯示出來的寬度不能自適應(yīng)屏幕侈百。
解決辦法:
1、在xib文件中讽坏,去掉使用AutoLayout例证。(否則步驟2不起作用)
2、在cell里面重寫layoutSubviews這個(gè)方法時(shí)织咧,需要調(diào)用[super layoutSubviews]笙蒙。在layoutSubviews方法中用代碼去適配cell上各個(gè)部分frame。
---------------------
版權(quán)聲明:本文為CSDN博主「wsjshx」的原創(chuàng)文章捅位,遵循CC 4.0 by-sa版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明尿扯。
原文鏈接:https://blog.csdn.net/wsjshx/article/details/50363657
我們在使用純代碼的時(shí)候一般都喜歡寫一個(gè)setupUI來做譬如切邊之類的事情.
純代碼一般都不會(huì)出現(xiàn)錯(cuò)誤.
比如我們把一個(gè)cell寫成了xib.那么他就不會(huì)走
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString?*)reuseIdentifier;
這個(gè)方法.而走的是
- (void)awakeFromNib;
這個(gè)方法.
在純代碼中,我們可以直接判斷
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
? ? if (self = [superinitWithStyle:style reuseIdentifier:reuseIdentifier]) {
? ? ? ? [selfsetupUI];
? ? }
? ? returnself;
}
中間的setupUI方法就是我們各種切邊之類的UI操作的方法.
但是如果我們走的是xib.那不好意思.如果直接在
- (void)awakeFromNib;
這個(gè)方法中直接self setupUI那么就會(huì)出現(xiàn)屏幕不適配的問題
網(wǎng)上很多的解決方案讓大家把a(bǔ)utolayout勾選去掉.但是我覺得這樣就失去了xib本身的優(yōu)勢.畢竟取消勾選的話約束就全部失去了.
所以我們就通過系統(tǒng)的調(diào)用順序來解決
從上圖可以看出來.系統(tǒng)會(huì)先調(diào)用awakeFromNib.然后用layoutSubViews來進(jìn)行二次布局.
我們在layoutSubViews里面先super 調(diào)用父類方法.然后setupUI就能夠完成我們不把xib約束變成手寫代碼的需求了.
---------------------
版權(quán)聲明:本文為CSDN博主「MeteoriteMan」的原創(chuàng)文章,遵循CC 4.0 by-sa版權(quán)協(xié)議淀散,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_18683985/article/details/77117222