UIView在UITableView之上

时间:2014-03-10 11:34:39

标签: uitableview uiview uiviewcontroller subviews

我一直在开发一个应用程序,其中我有UIViewController,我添加了UITableView。现在,我想在UIView顶部的固定位置添加tableview

我尝试了以下代码,但UIViewtableView一起滚动:

- (void)viewDidLoad {
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(250, 100, 50, 50)];
    view.backgroundColor = [UIColor orangeColor];
    [_tableView addSubview:view];
    [_tableView bringSubviewToFront:view];
}

如何阻止UIView滚动?

3 个答案:

答案 0 :(得分:4)

好吧,既然UITableViewUIScrollView的子类,你可以尝试实现类似“浮动视图”的东西。要做到这一点,你应该确保

  1. 浮动视图始终是层次结构中最顶层的视图
  2. contentOffset发生变化时,应该更新浮动视图的位置(以便在用户滚动时可视化地浮动在其他内容之上)
  3. 你可以尝试这样的事情(假设floatingHeaderViewCenterfloatingView的初始中心:

    - (void)scrollViewDidScroll:(UIScrollView *)scrollView
    {
        self.floatingHeaderView.center = CGPointMake(floatingHeaderViewCenter.x + scrollView.contentOffset.x, floatingHeaderViewCenter.y + scrollView.contentOffset.y);
        [scrollView bringSubviewToFront:floatingHeaderView];
    }
    

    虽然你最好有一个包含两个子视图的视图容器:tableview和浮动视图。

答案 1 :(得分:2)

您不应将视图添加为表视图的子视图。相反,视图控制器视图应该是其他视图的容器,在本例中是视图和表视图。将这两者添加为视图控制器视图的子视图。

答案 2 :(得分:1)

如果视图(viewToBringFront)隐藏在后面,那么您可以通过添加以下行来使其显示:

self.viewToBringFront.layer.zPosition = MAXFLOAT;