iOS小问题日记01——UITableView分割线问题

今天写一个简单的小例子,用到了UITableView,并且没有自定义分割线,所以反映出了分割线的显示问题(虽然之前好像遇到过,但是已经不记得了。。。)平时开发中都是自定义分割线的,所以也没有发现这个问题。

在iOS9和iOS10模拟器上,不进行任何设置,显示结果为:
默认显示.png
与这个有关系的几个设置

    //设置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];
    }
具体说明
  1. @property(nonatomic) UIEdgeInsets separatorInset;——UITableView的属性
    iOS7以后,表格的分割线不会占满整个cell,需要通过这个属性来设置默认的边距

  2. @property(nonatomic) BOOL cellLayoutMarginsFollowReadableWidth;——UITableView的属性
    iOS9以后,用于表明cell的边距是根据view的可读区域的宽度设置的。

可读区域说明:
@property(nonatomic, readonly, strong) UILayoutGuide *readableContentGuide;
iOS9以后,UIView引入了这个属性,这个属性为View定义了一个可以放置用于阅读的内容的最佳区域。如果启用 readableContentGuide的话,那么View就会把它作为边缘进行布局。

  1. @property(nonatomic) UIEdgeInsets layoutMargins;——UIView的属性,iOS8+
    就是xib上增加约束时,会出现的relatvie to margin,默认为16或20。(所以,好像和这里没有什么关系,只有在建立约束时不相对于边距就可以了)

你可能感兴趣的:(iOS小问题日记01——UITableView分割线问题)