繁体   English   中英

iOS7中的搜索栏在设置内容偏移时隐藏了一半

[英]Search bar in iOS7 half hidden when setting content offset

我在导航控制器中有一个表视图控制器,在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应用程序一样的过滤条,当视图第一次出现时,它会隐藏在导航栏下面,但可以通过向下滚动来显示。

我正在以编程方式构建搜索栏和搜索显示控制器,因为视图没有xibs / storyboard,它是标准的UITableViewController子类。

UISearchBar *aSearchBar = [[UISearchBar alloc] initWithFrame:CGRectZero];
UISearchDisplayController *aSearchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:aSearchBar contentsController:self];
aSearchBar.frame = ...

您应该设置为在iOS 7中获得预期的行为

self.edgesForExtendedLayout = UIRectEdgeNone;

加上这个

 [self.view bringSubViewToFront:aSearchBar];

[self.tableView setClipsToBounds:YES];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM