iOS 7 - 带搜索功能的UITableViewController位于状态栏下

时间:2013-09-11 16:37:01

标签: ios uitableview uisearchdisplaycontroller ios7

我有一个带有嵌入式UISearchDisplayController的UITableViewController。在iOS 7中,搜索框位于状态栏下方。在界面构建器中是否有一种方法可以偏移tableview,以便状态栏不会覆盖搜索栏(并且仍然使用UITableViewController和UISearchDisplayController设置)?

9 个答案:

答案 0 :(得分:14)

self.edgesForExtendedLayout=UIRectEdgeNone;

应解决此问题。

答案 1 :(得分:7)

您必须将其嵌入UINavigationController,然后在navVC中,只需取消选中Shows Navigation Bar即可 enter image description here

答案 2 :(得分:4)

感觉有点hacky但这个对我有用:

[self.tableView setContentInset:UIEdgeInsetsMake(self.navigationController.navigationBar.frame.size.height + [[UIApplication sharedApplication] statusBarFrame].size.height, 0, 0, 0)];

如果你正在为这两个方向工作:

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
 [self.tableView setContentInset:UIEdgeInsetsMake(self.navigationController.navigationBar.frame.size.height + [[UIApplication sharedApplication] statusBarFrame].size.height, 0, 0, 0)];

}

答案 3 :(得分:2)

将以下代码放在viewcontroller的viewdidload中。

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) 
{
        self.edgesForExtendedLayout = UIRectEdgeNone;
        self.extendedLayoutIncludesOpaqueBars = NO;
        self.automaticallyAdjustsScrollViewInsets = NO;
}

答案 4 :(得分:2)

self.edgesForExtendedLayout = UIRectEdgeNone;
...
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
    if (navigation.hiden) {
        [self.tbview setContentOffset:CGPointMake(0, -20)];
        [self.tbview setContentInset:UIEdgeInsetsMake(20, 0, 0, 0)];
    }
    else {
        [self.tbview setContentOffset:CGPointMake(0, -20)];
        [self.tbview setContentInset:UIEdgeInsetsMake(0, 0, 0, 0)];
    }
}

答案 5 :(得分:2)

我必须调整tableview的contentOffsetcontentInset。我的tableviewcontroller由模态segue触发,已嵌入故事板上游的导航控制器中。通过状态栏的高度调整内容插入,并通过搜索栏的高度偏移内容,显示从第一个单元格开始的表格视图。当用户下拉桌面视图时,将显示搜索栏。

self.tableView.contentOffset = CGPointMake(0, 44.0);
self.tableView.contentInset = UIEdgeInsetsMake(20.0, 0.0, 0.0, 0.0);

答案 6 :(得分:1)

我找到了罪魁祸首。将布局选项“调整滚动视图插图”设置为“开”就可以了。

答案 7 :(得分:1)

您需要做的就是选择UITableView所在的视图控制器并显示Attributes Inspector。在Attributes Inspector中,取消选中Extend Edges - >在顶栏和底杆下面。当我的UITableview加载到导航栏和标签栏

下面时,这对我有用

答案 8 :(得分:1)

将数据加载到表视图后,只需在iOS 6/7中调用它

[self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:NO];

但请确保将搜索栏添加为表格视图的标题