tableFooterView未在表格底部正确对齐

时间:2014-03-12 09:55:04

标签: ios uitableview autolayout tablefooterview

我遇到UITableView的奇怪行为。我已使用UIViewController设置了UITableViewUITableView包含tableHeaderViewtableFooterView,部分页脚视图以及一些具有动态高度的UITableViewCell个。

问题是tableFooterView出现在表格中间的某个位置(悬停在单元格上方),而不是将自己对齐在表格内容的底部。显然,表格contentSize属性也返回了错误的内容大小(特别是高度)。

然而,自定义部分页脚视图显示在正确的位置(并且位于实际的tableFooterView下方 - 正悬停在表格的中间)。

任何想法会发生什么?

注意:我的自定义表格视图(使用自动布局动态高度处理)显示“不明确的布局:2个视图垂直模糊。”#34;警告,但它在运行时正确调整大小。

表格设置非常简单:

// Set table header/footer view
self.myTableView.tableHeaderView = self.myTableHeaderView;
self.mainTableView.tableFooterView = self.myTableFooterView;

// Table delegate methods
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return [self heightForCellAtIndexPath:indexPath];
}

- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return [MyCustomCell defaultHeight];
}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {

    if (section == 0) {
        return self.mySectionFooterView;
    }

    return [UIView new];
}

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {

    if (section == 0) {
        return [self heightForSectionFooterView];
    }

    return 0.01f;
}

3 个答案:

答案 0 :(得分:2)

我最终只使用了一个带有页眉和页脚(并且没有行)的额外部分来获得所需的结果。也许自动布局表现得很奇怪。我仍然得到“不明确的布局:2个视图垂直模糊。”但UI看起来不错。

答案 1 :(得分:2)

现在看起来似乎是对于有关页脚视图的看不见的问题:

https://twitter.com/steipete/status/420538600384888832

答案 2 :(得分:2)

尝试设置 footerView.autoresizingMask = .flexibleWidth

示例代码:

let footerView = Bundle.main.loadNibNamed(String(describing: MyFooterView.self), owner: nil, options: nil)?.first as! MyFooterView
footerView.frame = CGRect(origin: .zero, size: CGSize(width: view.bounds.width, height: 80))
footerView.autoresizingMask = .flexibleWidth
tableView.tableFooterView = footerView