我在导航控制器中有一个表视图控制器,在viewDidLoad上我向表视图头添加了一些视图:
//Build up master container view with search bar and another view that has buttons
...
//Set this as the table header
self.tableView.tableHeaderView = masterHeaderContainerView;
如果我此时不做任何其他事情,我从上到下的视图看起来像
导航栏, 搜索栏, 带按钮的操作栏, 表格查看单元格... https://www.dropbox.com/s/mwhipz5qpa9duzw/filterAndActions.PNG
但是,我想隐藏导航栏下的搜索栏,所以我在viewWillAppear
中设置了表格视图的内容偏移量self.tableView.contentOffset = CGPointMake(0, self.searchBar.frame.size.height);
在iOS 6上,这个工作正常,但是在iOS 7上,当我向下滚动以显示搜索栏时,它已经消失了,它应该是一个空白区域。
可能会给问题提供线索的是,如果我将内容偏移硬编码为22(搜索栏高度的一半),然后向下滚动,则搜索栏被隐藏的背景看起来像是背景
https://www.dropbox.com/s/jm1vro769jfhpy8/halfFilterBar.PNG
因此,我设置内容偏移量的数量是覆盖搜索栏的数量。任何想法可能会在这里发生什么?
目标是在视图首次出现时,在导航栏下隐藏一个像Mail应用程序一样的过滤条,但可以通过向下滚动来显示。
我构建搜索栏并以编程方式搜索显示控制器,因为视图没有xib / storyboard,它是标准的UITableViewController子类。
UISearchBar *aSearchBar = [[UISearchBar alloc] initWithFrame:CGRectZero];
UISearchDisplayController *aSearchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:aSearchBar contentsController:self];
aSearchBar.frame = ...
答案 0 :(得分:2)
您应该设置为在iOS 7中获得预期的行为
self.edgesForExtendedLayout = UIRectEdgeNone;
答案 1 :(得分:1)
添加此
[self.view bringSubViewToFront:aSearchBar];
也
[self.tableView setClipsToBounds:YES];