在 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
任何建议如何解决它?谢谢
【问题讨论】:
请分享你的设计,你到底想做什么 为什么在表格视图中使用滚动视图功能?你只定义了横幅的宽度,那么高度呢? 您是从UIViewController
或UITableViewController
继承您的视图控制器吗?你能分享一下你想要的截图吗?
@f_qi 我增加了高度,但没有变化。
@lukas28277 请看一下凯尔的回答,我认为他的方法可以解决您正在尝试做的事情。
【参考方案1】:
与其试图将视图保持在scrollView
内,更简单的方法是使用标准UIViewController
和UIView
,使用AutoLayout
和constraints
和UITableView
连接到顶部附在UIView
的底部和UIViewController
的底部。
使用这种布局,只有较小的 tableView
会滚动,而您的 UIView
会在滚动的 UITableViewCells
范围之外保持不动。
如果您当前正在使用UITableViewController
,则需要从您的tableView
方法中删除override
修饰符,使您的UIViewController
实现UITableViewDataSource
和UITableViewDelegate
,然后附加@987654338 @ 在代码或情节提要中。
您的新 UIViewController
在顶部看起来像这样:
class MyController: UIViewController, UITableViewDataSource, UITableViewDelegate
...
【讨论】:
是的,我想过,但我觉得应该有办法,如何将uiview贴到顶部,因为它不是列表(tableView)的主要单元格的一部分 @lukas28277 有。检查我刚刚创建的重复链接。 @lukas28277 视图不是列表主要单元格的一部分这一事实是我推荐我的方法的确切原因。它将您描述的这个附属视图与您的 tableview 和 tableview 的逻辑完全分开。以上是关于在 TableView 之上的 UiView的主要内容,如果未能解决你的问题,请参考以下文章
如何在 UITableViewController 之上添加 UIView [关闭]