UITableView 之上的 UIView
Posted
技术标签:
【中文标题】UITableView 之上的 UIView【英文标题】:UIView on top of UITableView 【发布时间】:2014-03-10 11:34:39 【问题描述】:我一直在开发一个应用程序,其中有一个UIViewController
,我在其中添加了一个UITableView
。现在我想在固定位置的tableview
之上添加一个UIView
。
我尝试了以下代码,但 UIView
与 tableView
一起滚动:
- (void)viewDidLoad
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(250, 100, 50, 50)];
view.backgroundColor = [UIColor orangeColor];
[_tableView addSubview:view];
[_tableView bringSubviewToFront:view];
如何防止UIView
滚动?
【问题讨论】:
【参考方案1】:好吧,既然UITableView
是UIScrollView
的子类,你可以尝试实现类似“浮动视图”的东西。为此,您应该确保
-
浮动视图始终是层次结构中最顶层的视图
浮动视图的位置应在
contentOffset
更改时更新(以便在用户滚动时它会在视觉上浮动在其他内容之上)
你可以尝试这样的事情(假设floatingHeaderViewCenter
是floatingView
的初始中心:
- (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的主要内容,如果未能解决你的问题,请参考以下文章
IOS - 滚动时将 UIView 保持在 UITableView 之上