UITableView 之上的 UIView

Posted

技术标签:

【中文标题】UITableView 之上的 UIView【英文标题】:UIView on top of UITableView 【发布时间】:2014-03-10 11:34:39 【问题描述】:

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

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

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

如何防止UIView 滚动?

【问题讨论】:

【参考方案1】:

好吧,既然UITableViewUIScrollView 的子类,你可以尝试实现类似“浮动视图”的东西。为此,您应该确保

    浮动视图始终是层次结构中最顶层的视图 浮动视图的位置应在contentOffset 更改时更新(以便在用户滚动时它会在视觉上浮动在其他内容之上)

你可以尝试这样的事情(假设floatingHeaderViewCenterfloatingView的初始中心:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

    self.floatingHeaderView.center = CGPointMake(floatingHeaderViewCenter.x + scrollView.contentOffset.x, floatingHeaderViewCenter.y + scrollView.contentOffset.y);
    [scrollView bringSubviewToFront:floatingHeaderView];

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

【讨论】:

其实我希望 UIView 出现在 TableView 顶部的中心位置。所以我不能使用 tableview 的页眉和页脚。【参考方案2】:

您不应该将视图添加为表格视图的子视图。相反,视图控制器视图应该是其他视图的容器,在这种情况下,它是一个视图和一个表视图。将这两个都添加为视图控制器视图的子视图。

【讨论】:

但是如果我将第二个 UIView 添加为 viewController 的子视图,那么它会隐藏在 tableView 后面。我希望它出现在它上面。 你还在用bringSubviewToFront吗? 喜欢这个 tableView.superview?.addSubview(newView)【参考方案3】:

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

self.viewToBringFront.layer.zPosition = MAXFLOAT;

【讨论】:

以上是关于UITableView 之上的 UIView的主要内容,如果未能解决你的问题,请参考以下文章

将 UITableView 单元堆叠在彼此之上

UITableView 之上的自定义手势

在 UiTableView 之上创建一个按钮

IOS - 滚动时将 UIView 保持在 UITableView 之上

UICollectionView 在单独的子视图控制器中的 UITableView 之上

我想使用 SnapKit 将顶部 UIView 放置在 UITableView 之上