我有一个推送TabBarViewController的ViewController。在TabBar View Controller里面我有4个标签。其中两个标签栏是UITableViewControllers,另外两个是ViewControllers。第一个选项卡是一个表视图控制器,工作正常,即不被导航栏隐藏。第三个选项卡是另一个TableViewController,部分由导航栏覆盖。第一个部分和第一个单元格隐藏在导航栏下方。过去有没有人遇到过这个问题,或者有人知道解决这个问题吗?我尝试了一些手动调整帧大小的方法
self.tableView.frame = CGRectMake(10,10,self.view.bounds.size.width -20, self.view.bounds.size.height-20);
这似乎不起作用。我也试过AutoLayout但没有用。我不知道还能做什么。任何人对如何解决这个问题有任何建议或想法。
编辑:我尝试了edgesForExtendedLayout
,但它使我的导航栏颜色变深了。它可以为导航栏中的颜色更改设置动画,有点像加载栏。
注意:这只发生在ios7中。我只是在iOS 6.1中模拟它,导航栏根本没有覆盖表视图控制器,这对我来说很奇怪。有人有什么建议吗?
编辑#2:注意到这是iOS 7>问题我做了以下但现在导航栏已将颜色更改为更深的颜色。
if([[[[UIDevice currentDevice] systemVersion] componentsSeparatedByString:@"."][0] intValue] >= 7)
{
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
{
self.edgesForExtendedLayout = UIRectEdgeNone;
self.extendedLayoutIncludesOpaqueBars = YES;
self.automaticallyAdjustsScrollViewInsets = NO;
}
}
答案 0 :(得分:2)
在UITableViewController的viewDidLoad方法中(假设它加载了对tabBarController的调用)与选项卡关联使用
if ([self respondsToSelector:@selector(edgesForExtendedLayout)]) {
self.edgesForExtendedLayout = UIRectEdgeNone;
self.tableView.contentInset = UIEdgeInsetsMake(0., 0., CGRectGetHeight(self.tabBarController.tabBar.frame), 0);
}
答案 1 :(得分:1)
我用以下方法解决了这个问题:
if ([self respondsToSelector:@selector(edgesForExtendedLayout)]) {
viewcontroller.edgesForExtendedLayout = UIRectEdgeNone;
viewcontroller.extendedLayoutIncludesOpaqueBars = NO;
viewcontroller.automaticallyAdjustsScrollViewInsets = NO;
}