【问题标题】:Set UITableViewHeaderFooterView margin values (on scrolling)设置 UITableViewHeaderFooterView 边距值(滚动时)
【发布时间】:2015-10-13 09:30:16
【问题描述】:

我构建了一个带有部分标题的UITableView,可以扩展特定部分。我正在为UITableViewHeaderView 使用来自.xib 文件的自定义视图。我想设置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);
        }
    }
    

【问题讨论】:

    标签: ios objective-c uitableview uiscrollview


    【解决方案1】:
    1. 您可以在标题视图中放置一个带有边距的子视图。
    2. 设置高度当然是可能的,通过设置框架来完成,但你也可以让你的导航栏不透明,这样可以节省你大量的编码。

      [self.navigationController.navigationBar setTranslucent:NO];
      

    如果你想改变高度,你的代码应该是这样的:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-06
      • 1970-01-01
      • 2015-07-07
      • 2011-06-17
      • 1970-01-01
      • 2011-08-24
      • 2014-01-26
      • 1970-01-01
      相关资源
      最近更新 更多