iOS UITableView Cell缩进

时间:2016-01-29 17:14:02

标签: ios objective-c uitableview contentful

我正在以编程方式设置UITableView。我希望单元格的内容跨越整个屏幕宽度。我已成功将单元格设置为跨越屏幕宽度,但内容和分隔符仍然显着(下面的iPad屏幕截图)。

以下是我的视图控制器实现中的tableview布局设置:

- (void) viewDidLoad {
    [super viewDidLoad];

    // table layout
    self.tableView.rowHeight = 192;
    UILayoutGuide *margins = [self.view layoutMarginsGuide];
    [self.tableView.leadingAnchor constraintEqualToAnchor:margins.leadingAnchor] ;
    [self.tableView.trailingAnchor constraintEqualToAnchor:margins.trailingAnchor];
    self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0);

    CGRect tableRect = self.view.frame;
    self.tableView.frame = tableRect;

    // table colors
    self.tableView.backgroundColor = [UIColor grayColor];
    self.tableView.separatorColor = [UIColor grayColor];
    UIView *backView = [[UIView alloc] init];
    [backView setBackgroundColor:[UIColor grayColor]];
    [self.tableView setBackgroundView:backView];
}

然后我设置了单元格的内容:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell* cell = [super tableView:tableView cellForRowAtIndexPath:indexPath];
    cell.backgroundColor = [UIColor blueColor];
    cell.indentationWidth = 0;
    cell.indentationLevel = 0;
    cell.layoutMargins = UIEdgeInsetsMake(0, 0, 0, 0);
    cell.contentView.backgroundColor = [UIColor purpleColor];
    return cell;
}

单元格背景为蓝色,横跨屏幕宽度。我的屏幕截图中的紫色区域是contentView,正如您所看到的,它不会延伸到屏幕的右边缘,并且单元格文本位于左侧。分隔符也在左右两侧插入。

table screenshot

2 个答案:

答案 0 :(得分:4)

由于@technerd对我的问题的评论,我发现了这个问题。谢谢!

我在iOS 9.2上测试我的应用程序,但我忽略了新的iOS9 +单元格属性 cellLayoutMarginsFollowReadableWidth ,它默认调整单元格布局。

要关闭自动调整大小,您需要检查iOS版本,然后禁用该属性,如@technerd所示:

目标C

- (void)viewDidLoad {
    [super viewDidLoad];

    //For iOS 9 and Above 

    if ([[[UIDevice currentDevice]systemVersion]floatValue] >= 9.0) {
        self.tableView.cellLayoutMarginsFollowReadableWidth = NO;
    }
}

<强>夫特

override func viewDidLoad() {
    super.viewDidLoad()

    //For iOS 9 and Above 
    if #available(iOS 9, *) {
        tableView.cellLayoutMarginsFollowReadableWidth = false
    }
}

希望这有助于其他人。

答案 1 :(得分:0)

上述解决方案实际上并不能完美运行。虽然,您现在要做的只是:

tableView.separatorInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)

这将使分隔符在表格视图的整个宽度上运行。