设置UITableViewHeaderFooterView边距值(滚动时)

时间:2015-10-13 09:30:17

标签: ios objective-c uitableview uiscrollview

我使用可扩展特定部分的节标题构建UITableView。我正在使用.xib文件中的自定义视图UITableViewHeaderView。我想设置HeaderView的边距值,使其不是全宽,并在向下滚动时保持在顶部(不是全高)。

  1. 正如您在动画中看到的那样,视图具有全宽 - 是否可以在标题中添加边距,以便在HeaderView和屏幕边缘之间留出一些空格。

  2. 如果滚动UITableView,我想减小粘性标题的高度 - 这样屏幕顶部只显示按钮的文字。我已经从UIScrollView实现了以下委托命令,该命令工作正常,但它减少了第一个HeaderView的边距,使其移动到导航栏后面(参见动画) - 我该如何避免?

    -(void)scrollViewDidScroll:(UIScrollView *)scrollView 
    {
        CGFloat sectionHeaderHeight = 20;
        if (scrollView.contentOffset.y<=sectionHeaderHeight&&scrollView.contentOffset.y>=0) {
            scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0);
        } else if (scrollView.contentOffset.y>=sectionHeaderHeight) {
            scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, 0, 0);
        }
    }
    

    Capture

1 个答案:

答案 0 :(得分:1)

  1. 您可以在标题视图中添加带边距的子视图。
  2. 设置高度当然可以通过设置框架来完成,但您也可以使导航栏不是半透明的,这样可以节省大量的编码。

    [self.navigationController.navigationBar setTranslucent:NO];
    
  3. 如果您想更改高度,您的代码将类似于:

    CGRect frame = header.frame;
    frame.size.height = 44;
    header.frame = frame;
    [self.tableView setTableHeaderView:header];