将子视图添加到 UINavigationBar 时向下推 UITableView
Posted
技术标签:
【中文标题】将子视图添加到 UINavigationBar 时向下推 UITableView【英文标题】:Push UITableView down when adding subview to UINavigationBar 【发布时间】:2016-10-17 09:35:00 【问题描述】:我正在尝试实现一个应该出现在UINavigationBar
下方的通知栏。问题是当通知出现时,UITableView
中的单元格没有被下推,因此隐藏在通知后面,如下所示:
我的代码如下:
@IBOutlet var notificationView: UIView!
let navBar = self.navigationController?.navigationBar
let navBarHeight = navBar?.frame.height
let notificationFrame = notificationView.frame
let nSetX = notificationFrame.origin.x
let nSetY = CGFloat(navBarHeight!)
let nSetWidth = self.view.frame.width
let nSetHight = notificationFrame.height
notificationView.frame = CGRect(x: nSetX, y: nSetY, width: nSetWidth, height: nSetHight)
self.navigationController?.navigationBar.addSubview(notificationView)
【问题讨论】:
只需更新top
或tableView.frame.origin.y
的tableview 约束
@h44f33z 你会怎么做? self.tableView.frame.origin.y = self.tableView.frame.origin.y + nSetHight
根本不动。据我所知,您不能为 tableview 设置顶部约束。
【参考方案1】:
有一些解决方案可以解决您的问题,但对您来说最简单的解决方案可能是在顶部添加内容偏移量,如下所示:
self.tableView.contentInset = UIEdgeInsetsMake(newBar.height, 0, 0, 0)
@h44f33z 建议的另一个解决方案是在新栏和 tableView 之间添加一个约束,因此它类似于此(以视觉格式):
"V:|-0-[newBar(\(newBar.height))]-0-[tableView]-0-|"
【讨论】:
以上是关于将子视图添加到 UINavigationBar 时向下推 UITableView的主要内容,如果未能解决你的问题,请参考以下文章
如何将子视图添加到 UIViewController 将 UINavigationBar 推到后面