UITableView - 保持第0部分的标题标签不接触表格的标题

时间:2016-10-25 20:01:42

标签: ios objective-c uitableview

我有一个带有标题标题的几个部分的UITableView。

我还有一个表格的主标题。

我的问题是第0部分标题的标签触及该部分标题的顶部边缘,这与整个表格的标题相对应。这在其他地方不是问题,因为其他部分有一个小的页脚,所以在其他标题和上一部分中的最后一个单元格之间有额外的空间。

我无法弄清楚如何解决这个问题。

理想情况下,我只是在表的标题和第一部分的标题之间添加空格,但是查看可用的tableview / delegate方法,这是不可能的。

我的第二个想法是将标题文本垂直居中于标题中。为此,我找到了viewForHeaderInSection方法。我尝试以下方法来访问标签,但是从这里开始我就停留在如何使它垂直对齐。所有NSTextAlignment选项似乎都是水平对齐,而不是垂直对齐。

(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    (UITableViewHeaderFooterView *view = (UITableViewHeaderFooterView *)[super tableView:tableView viewForHeaderInSection:section];

    // center view.textLabel

    return view;
}

有关最佳方法的任何提示吗?我是在正确的轨道上吗?试图在我的应用程序中润滑一些UI,并且每次表加载时看到这个文本都会碰到头部。

编辑 - 以下是显示问题的屏幕截图:enter image description here

2 个答案:

答案 0 :(得分:0)

截图确实有帮助,如果可以,请更新您的问题。

同时,如果我正确理解了问题,为什么不在你tableView.tableHeaderView的内容之下添加一些保证金呢?

如果这不是一个选项,您可以在自己的示例中制作自己的自定义标题,而无需来调用super(但我同意viewForHeaderInSection是正确的方式去)。

看到您的屏幕截图后编辑

只需使用UITableViewDelegate方法viewForHeaderInSectionheightForHeaderInSection - 这里有一些可以帮助您入门的代码:

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.view.bounds), 30)];
    headerView.backgroundColor = [UIColor redColor];

    UILabel *headerLabel = [[UILabel alloc] initWithFrame:CGRectInset(headerView.bounds, 10, 0)];
    [headerView addSubview:headerLabel];
    headerLabel.text = @"Section header";
    return headerView;
}

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    return 30.0f;
}

答案 1 :(得分:0)

所以,我的解决方案最终是增加表格标题的高度,并在其中添加一个我视为标题的视图,所以额外的空间有点像标题的页脚,如果你将

我尝试过这个解决方案,但它没有用,因为我的TVC的viewDidLayoutSubviews方法和viewWillAppear方法都没有正确设置框架。解决方法是在调用我的方法添加渐变图层之前调用[myView layoutIfNeeded]。

我仍然认为应该有一个dang ol'表格标题和表格内容之间的填充值...