iPhone X TableView页脚问题

时间:2018-11-04 18:10:12

标签: ios iphone uitableview autolayout

好,首先要注意两点:我还是iOS开发的新手,我敢打赌这个问题已经被回答了好几次了,所以请随时将其链接到可行的解决方案

现在有问题:我有一个 UITableViewController ,其中包括自定义页脚视图。 (它们是自定义的,在底部添加了一个小边框,内置页脚仅为纯灰色)。老式的iPhone一切正常,但是在新的X上,我得到以下信息:

Footer is broken

是否可以将页脚视图全部向下扩展到视图区域的底部?

1 个答案:

答案 0 :(得分:1)

由于安全区域,默认布局是这样的。如果要让页脚视图覆盖内容,我可以给您2个解决方案。

  • 请改用UITableViewStyleGrouped,但页脚视图将不会在屏幕上静态显示。

  • 我认为这不是最好的做法,但是我认为布局应该是您想要的。这有点棘手。步骤是:

    1. 创建一个扩展视图,使其高度等于底部安全区域
    2. 将此扩展视图放在页脚视图下方,并将背景颜色设置为与页眉视图的背景颜色相同。
    3. 确保标题视图高度等于底部安全区域的高度。 (这一步很棘手)

示例代码

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
    UILabel *footerView = [[UILabel alloc] init];
    footerView.backgroundColor = [UIColor colorWithRed:0.968 green:0.968 blue:0.968 alpha:1]; //Section Header Background Color
    footerView.textAlignment = NSTextAlignmentRight;
    footerView.text = @"Footer";

    UIView *extendView = [[UIView alloc] init];
    extendView.translatesAutoresizingMaskIntoConstraints = NO;
    extendView.backgroundColor = footerView.backgroundColor;
    [footerView addSubview:extendView];

    [footerView addConstraints:@[
                                 [NSLayoutConstraint constraintWithItem:extendView
                                                              attribute:NSLayoutAttributeTop
                                                              relatedBy:NSLayoutRelationEqual
                                                                 toItem:footerView
                                                              attribute:NSLayoutAttributeBottom
                                                             multiplier:1.0
                                                               constant:0],
                                 [NSLayoutConstraint constraintWithItem:extendView
                                                              attribute:NSLayoutAttributeCenterX
                                                              relatedBy:NSLayoutRelationEqual
                                                                 toItem:footerView
                                                              attribute:NSLayoutAttributeCenterX
                                                             multiplier:1.0
                                                               constant:0],
                                 [NSLayoutConstraint constraintWithItem:extendView
                                                              attribute:NSLayoutAttributeWidth
                                                              relatedBy:NSLayoutRelationEqual
                                                                 toItem:footerView
                                                              attribute:NSLayoutAttributeWidth
                                                             multiplier:1.0
                                                               constant:0],
                                 [NSLayoutConstraint constraintWithItem:extendView
                                                              attribute:NSLayoutAttributeBottom
                                                              relatedBy:NSLayoutRelationEqual
                                                                 toItem:footerView
                                                              attribute:NSLayoutAttributeBottom
                                                             multiplier:1.0
                                                               constant:self.view.safeAreaInsets.bottom]
                                 ]];
    return footerView;
}

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    return self.view.safeAreaInsets.bottom;
}

屏幕记录GIF

Link(我是stackoverflow的新手,无法直接发布图像。对不起!)