今天將Xcode和iPhone分別升級(jí)到Xcode9和iOS11運(yùn)行了一下項(xiàng)目非春,發(fā)現(xiàn)有的TableView的Header不見(jiàn)了柱徙,多個(gè)分組變成了一組缓屠。而且還多出了一些分割線。
沒(méi)有數(shù)據(jù)時(shí)不顯示tableView的分割線:
_tableView.tableFooterView = [[UIView alloc] init];
tableView
的 Header
护侮、 Footer
設(shè)置
// tableView 如果是Gruop類型的話藏研,section之間的間距變寬,執(zhí)行返回高度的同時(shí)還需要執(zhí)行return UIView的代理
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return 10;
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return 10;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
return [[UIView alloc] init];
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
return [[UIView alloc] init];
}
將上述代碼添加到類中概行,再繼續(xù)運(yùn)行就好了。
tableView
自動(dòng)設(shè)置內(nèi)邊距修改
// tableView 偏移20/64適配
if (@available(iOS 11.0, *)) {
self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;//UIScrollView也適用
}
else {
self.automaticallyAdjustsScrollViewInsets = NO;
}
automaticallyAdjustsScrollViewInsets
弧岳,當(dāng)設(shè)置為YES
時(shí)(默認(rèn)YES
)凳忙,如果視圖里面存在唯一一個(gè)UIScrollView
或其子類View
,那么它會(huì)自動(dòng)設(shè)置相應(yīng)的內(nèi)邊距禽炬,這樣可以讓scroll
占據(jù)整個(gè)視圖涧卵,又不會(huì)讓導(dǎo)航欄遮蓋。當(dāng)
controller
上的第一個(gè)子視圖不是scrollview
以及其子類的時(shí)候腹尖,就會(huì)取消內(nèi)邊距柳恐。此時(shí)原本全屏的scrollview
設(shè)置的frame(0,0热幔,self.view.frame.size.width乐设,xx)
就會(huì)從狀態(tài)欄開(kāi)始算起,如果應(yīng)用有導(dǎo)航欄的話绎巨,那么就會(huì)遮蓋住視圖的64
個(gè)高度解決方案:
self.automaticallyAdjustsScrollViewInsets = NO
近尚;禁用掉自動(dòng)設(shè)置的內(nèi)邊距,自行控制controller
上index
為0
的控件以及scrollview
控件的位置
self.edgesForExtendedLayout = UIExtendedEdgeNone
;這種方式設(shè)置场勤,不需要再重新設(shè)置index
為0
的控件的位置以及scrollview
的位置戈锻,(0,0)
默認(rèn)的依然是從導(dǎo)航欄下面開(kāi)始算起作者:天清水藍(lán)
鏈接:http://www.reibang.com/p/75fd23bb5286
來(lái)源:簡(jiǎn)書(shū)
著作權(quán)歸作者所有和媳。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán)格遭,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。