在 TableView 之上的 UiView

Posted

技术标签:

【中文标题】在 TableView 之上的 UiView【英文标题】:UiView on top of the TableView 【发布时间】:2017-03-06 16:51:14 【问题描述】:

我正在尝试将 UIView(横幅)放在列表​​(tableView)的顶部,因此当用户向下滚动列表时 UIview 不会消失。 我试过这段代码,但没有用。

override func viewDidLayoutSubviews() 
    self.view.addSubview(banner)
    banner.frame.size.width = self.view.frame.size.width

override func scrollViewDidScroll(_ scrollView: UIScrollView) 
    var rect = self.banner.frame
    rect.origin.y = max(0,scrollView.contentOffset.y + scrollView.contentInset.top)
    self.banner.frame = rect

任何建议如何解决它?谢谢

【问题讨论】:

请分享你的设计,你到底想做什么 为什么在表格视图中使用滚动视图功能?你只定义了横幅的宽度,那么高度呢? 您是从UIViewControllerUITableViewController 继承您的视图控制器吗?你能分享一下你想要的截图吗? @f_qi 我增加了高度,但没有变化。 @lukas28277 请看一下凯尔的回答,我认为他的方法可以解决您正在尝试做的事情。 【参考方案1】:

与其试图将视图保持在scrollView 内,更简单的方法是使用标准UIViewControllerUIView,使用AutoLayoutconstraintsUITableView 连接到顶部附在UIView 的底部和UIViewController 的底部。

使用这种布局,只有较小的 tableView 会滚动,而您的 UIView 会在滚动的 UITableViewCells 范围之外保持不动。

如果您当前正在使用UITableViewController,则需要从您的tableView 方法中删除override 修饰符,使您的UIViewController 实现UITableViewDataSourceUITableViewDelegate,然后附加@987654338 @ 在代码或情节提要中。

您的新 UIViewController 在顶部看起来像这样:

class MyController: UIViewController, UITableViewDataSource, UITableViewDelegate 
    ...

【讨论】:

是的,我想过,但我觉得应该有办法,如何将uiview贴到顶部,因为它不是列表(tableView)的主要单元格的一部分 @lukas28277 有。检查我刚刚创建的重复链接。 @lukas28277 视图不是列表主要单元格的一部分这一事实是我推荐我的方法的确切原因。它将您描述的这个附属视图与您的 tableview 和 tableview 的逻辑完全分开。

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

如何在 UITableViewController 之上添加 UIView [关闭]

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

UITableView 在彼此之上添加重复的标签

将 UITableView 单元堆叠在彼此之上

tableview 顶部的视图显示在下面

两个标签在tableView单元格中垂直对齐自动调整大小