今天写一个简单的小例子,用到了UITableView,并且没有自定义分割线,所以反映出了分割线的显示问题(虽然之前好像遇到过,但是已经不记得了。。。)平时开发中都是自定义分割线的,所以也没有发现这个问题。
在iOS9和iOS10模拟器上,不进行任何设置,显示结果为:
与这个有关系的几个设置
//设置iOS7以上表格分割线边距,与setLayoutMargins:同时存在时,setSeparatorInset:设置生效
if ([self.mainTableView respondsToSelector:@selector(setSeparatorInset:)]) {
[self.mainTableView setSeparatorInset:UIEdgeInsetsZero];
}
//可不设
if ([self.mainTableView respondsToSelector:@selector(setLayoutMargins:)]) {
[self.mainTableView setLayoutMargins:UIEdgeInsetsZero];
}
//设置iOS9以上表格分割线边距
if ([self.mainTableView respondsToSelector:@selector(setCellLayoutMarginsFollowReadableWidth:)]) {
[self.mainTableView setCellLayoutMarginsFollowReadableWidth:NO];
}
具体说明
@property(nonatomic) UIEdgeInsets separatorInset;
——UITableView的属性
iOS7以后,表格的分割线不会占满整个cell,需要通过这个属性来设置默认的边距@property(nonatomic) BOOL cellLayoutMarginsFollowReadableWidth;
——UITableView的属性
iOS9以后,用于表明cell的边距是根据view的可读区域的宽度设置的。
可读区域说明:
@property(nonatomic, readonly, strong) UILayoutGuide *readableContentGuide;
iOS9以后,UIView引入了这个属性,这个属性为View定义了一个可以放置用于阅读的内容的最佳区域。如果启用 readableContentGuide的话,那么View就会把它作为边缘进行布局。
-
@property(nonatomic) UIEdgeInsets layoutMargins;
——UIView的属性,iOS8+
就是xib上增加约束时,会出现的relatvie to margin,默认为16或20。(所以,好像和这里没有什么关系,只有在建立约束时不相对于边距就可以了)