2016-11-28 84 views
1

所以我试图实现的是我想在tableview和导航栏之间添加视图。层次结构将如下所示: Top-NavigationBar-betweenView-tableView-Bottom。如何在表格视图和导航栏之间添加视图?

我已经尝试过这样的事情,但是betweenView不会在导航栏下面,而且tableView上面有一个奇怪的空白区域。任何人有任何想法?谢谢!

let betweenView = searchController.searchBar 

    self.view.addSubview(betweenView) 

    let upperConstraint = NSLayoutConstraint(item: betweenView, attribute: .top, relatedBy: .equal, toItem: self.tableView, attribute: .top, multiplier: 1, constant: (self.navigationController?.navigationBar.frame.height)!) 
    let lowerConstraint = NSLayoutConstraint(item: self.tableView, attribute: .top, relatedBy: .equal, toItem: searchView, attribute: .bottom, multiplier: 1, constant: 0) 

    self.view.addConstraint(upperConstraint) 
    self.view.addConstraint(lowerConstraint) 
+0

@鸡的本质桌面视图标题的问题是它与tableView滚动,我希望这个视图固定在顶部。我实际上使用了一个UIViewController,并且已经在其中放置了一个表视图,但是这个约束并不像我想要的那样,这就是我所要求的。尽管谢谢你的评论!:D –

回答

0

你要在这里做两件事情:

1)布局搜索视图顶部布局引导约束。这将移动在每个需要的基础导航栏下方的搜索视图:

let upperConstraint = NSLayoutConstraint(item: searchView, attribute: .top, relatedBy: .equal, toItem: topLayoutGuide, attribute: .bottom, multiplier: 1, constant: 0) 

2)你需要确保表不会自动调整滚动到导航控制器:

tableView.automaticallyAdjustsScrollViewInsets = false 
+0

谢谢你的回复。我已经尝试了你的解决方案,我已经将约束的toItem改为topLayoutGuide,但是由于某种原因,betweenView仍然隐藏在导航栏之后:(我简直不明白为什么betweenView必须坚持到顶部屏幕而不是在导航栏下面 –

+0

您是否确定在布局指南中使用.bottom属性?下面是一个示例,您可以将它粘贴到操场中以查看工作情况:https://gist.github.com/ pixelrevision/6482661045002868cf0ba3ad8ec264a1 – pixelrevision