iOS 7自定义TableView在TabBar下

我试图移植我的应用程序到iOS7 ,但我的自定义TableViewController显示TabBar下的最后一行(单元格):(

林寻找很多,但我没有find任何解决scheme。 谁能帮我?

我的自定义表视图类

错误显示在下面的截图中(仅显示上一个产品的一部分,因为我们在Tabbar下面显示隐藏的产品):

截图

谢谢。

我有同样的问题,并使用故事板解决它。 在标签栏控制器,转到属性检查器,模拟度量标准,并将底部栏设置为不透明标签栏。 而已! 有关说明,请参见下图。 在这里输入图像说明

Saudações! (问候!)

我在另一个post上find了你的问题的答案,由dariaa回答,在这里:

标签栏覆盖iOS7中的TableView单元格

我为我工作很好。

请不要信任我,因为我不是解决它的原始人。

在你自定义的TableViewController中,在[super viewDidLoad]下面添加这两行:

 - (void)viewDidLoad { [super viewDidLoad]; self.edgesForExtendedLayout = UIRectEdgeAll; self.tableView.contentInset = UIEdgeInsetsMake(0., 0., CGRectGetHeight(self.tabBarController.tabBar.frame), 0); } 

viewDidLoad 2行,就是这样!

 self.edgesForExtendedLayout = UIRectEdgeAll; self.tableview.contentInset = UIEdgeInsetsMake(0.0f, 0.0f, CGRectGetHeight(self.tabBarController.tabBar.frame), 0.0f); 

在iOS 7中,viewController使用全高。 有一个属性介绍为

 self.automaticallyAdjustsScrollViewInsets = NO; 

设置为no。 然后检查,或者设置UIEdgeInset,如果没有正确设置。

 UIEdgeInsetsMake(top, left, bottom, right) 

见这里https://developer.apple.com/library/ios/documentation/userexperience/conceptual/TransitionGuide/AppearanceCustomization.html

编辑 :也试试这个

 self.edgesForExtendedLayout = UIRectEdgeNone; 

这个问题的根本原因是automaticallyAdjustsScrollViewInsets调用ScrollViewInsets只在 VC的视图层次结构中的第一个滚动视图上有效 。 它没有被Applelogging,但它是唯一的方式,VC会检测到需要修改的滚动视图,除非你使用的是UITableViewController。

因此,为了解决您的问题,而无需手动调整插页,请执行以下操作:

  1. 确保选中“调整滚动查看插图”。
  2. 确保tableView是视图层次结构中的第一个子视图。 (向上移动所有其他元素)

我的朋友们,我无法告诉你我有多挣扎。 没有一个故事板的重新configuration从来没有帮助过我。 这个问题是完全像在原来的post,我已经设法解决它使用:

为迅速3

 self.edgesForExtendedLayout = [] 

对于Objective-C

 self.edgesForExtendedLayout = NO; 

UIViewController有两个新的属性可以帮助你: topLayoutGuidebottomLayoutGuide 。 他们返回您需要避免的父视图控制器的控件的高度。 在这种情况下, bottomLayoutGuide将返回标签栏的偏移量。

你的自定义视图控制器可能是重写一个方法,而不是调用super的实现,这将为你完成。 我猜你正在安装AutoLayout约束或手动设置视图的框架来填充视图。 您只需要将[bottomLayoutGuide length]的值包含到布局计算中即可。 如果你支持旋转,你应该在willAnimateRotationToInterfaceOrientation:duration:更新这个值willAnimateRotationToInterfaceOrientation:duration:

UINavigationControllerUITabBarController都有一个透明度标志,可以以编程方式或在故事板中设置。

UINavigationController还有两个标志,用于控制内容是否在顶部或底部栏下方延伸。 再次,您可以将它们设置为编程或在故事板中。 这将适用于所有子视图。

每个UIViewController可以在代码中设置自己的首选项。 该属性被称为edgesForExtendedLayout ,你可以设置所有的组合。

使用这些属性将允许AutoLayout和Springs'n'Struts按照您希望的方式调整视图,而不考虑设备。

UIViewController中有很多新的属性,你会想看看。

尝试以下操作:

  if ([self respondsToSelector:@selector(edgesForExtendedLayout)]) self.edgesForExtendedLayout = UIRectEdgeBottom; 

我有同样的问题。 解决方法是使ToolBar 不是半透明的。 以下是如何做到这一点:

  • 首先从文档查看器中select工具栏, 就像这里一样
  • 然后取消半透明 像这里

希望这可以帮助。

谢谢。

问题被掩盖使用:

 -(void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 112, 0); } 

但它并没有解决,因为在每个iPhone和每个应用程序tableview我有一个不同的底部空间。

所以这是一个糟糕的解决scheme。

我不知道解决这个问题的方法。

我现在解决了我的问题,改变我的BaseTableViewController从UIViewControllerinheritance到UITableViewController。

但是使用UIViewController里面的TableView不能解决:(

谢谢。

也许不是一个正确的答案,也是因为这个原因,我发布这个答案,所以你可以告诉我,如果这个答案可能是一个可能的解决scheme。

就我而言,我喜欢半透明效果,所以我在表格中添加了一个页脚,并修改了scrollIndicators。

 - (void)viewDidLoad { // Do any additional setup after loading the view. [super viewDidLoad]; UIView *footer = [[UIView alloc]initWithFrame:CGRectMake(0, 0, self.agendaItemsTable.frame.size.width, self.tabBarController.tabBar.frame.size.height)]; self.agendaItemsTable.tableFooterView = footer; self.agendaItemsTable.scrollIndicatorInsets = UIEdgeInsetsMake(0, 0, self.tabBarController.tabBar.frame.size.height, 0); } 

你怎么看?

我也遇到了同样的问题,最后的答案并没有解决。 查看我对类似问题的回答, Tab Bar覆盖iOS7中的TableView单元格 。

我通过手动将表视图控制器的viewWillAppear:方法中的表视图框架设置为屏幕高度(状态栏高度+导航栏高度+选项卡栏高度)来解决问题。

 - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; // Adjust height of tableview (does not resize correctly in iOS 7) CGRect tableViewFrame = self.tableView.frame; tableViewFrame.size.height = [self heightForTableView]; self.tableView.frame = tableViewFrame; } - (CGFloat)heightForTableView { return CGRectGetHeight([[UIScreen mainScreen] bounds]) - (CGRectGetHeight([[UIApplication sharedApplication] statusBarFrame]) + CGRectGetHeight(self.navigationController.navigationBar.frame) + CGRectGetHeight(self.tabBarController.tabBar.frame)); } 

如果有人find更好的解决scheme,请分享!

对于那些想要半透明效果xarly ,以及Autolayout解决scheme(无需设置框架)的人,请参阅我的答案https://stackoverflow.com/a/26419986/1158074