iOS 7的控制器默认都是全屏的
如图所示:
程序入口是一个导航控制器,
导航控制器的根控制器是一个TabBarController,
因此,状态栏+导航栏会盖住TabBarController控制器的上面64的高度
TabBarController的子控制器是一个TableViewController,
因此,TabBarController的TabBar会盖住TableViewController的下部分49的高度,
因此,TableViewController的数据不能像iOS6那样正常地全部展示
结果就变成了这样:TabViewController上下被遮挡
为了能像iOS6那样,使控制器的view展示完全,需要作如下处理:
让TabBarController和它的所有子控制 都不要自动展开占据整个屏幕
@implementation BeyondTabBarController - (void)viewDidLoad { [super viewDidLoad]; // 重要~~~iOS7的控制器的view的适配 if (iOS7) { // 目的,让TabBar控制器 不要展开为全屏的 // 1.UIRectEdgeNone不要往四周边缘展开(按照非iOS7的传统来展示) self.edgesForExtendedLayout = UIRectEdgeNone; // 2.同时,也让TabBar控制器 所有的子控制器都不能展开 for (UIViewController *vc in self.childViewControllers) { vc.edgesForExtendedLayout = UIRectEdgeNone; } // NO代表展开的时候不要包含那个条 // self.extendedLayoutIncludesOpaqueBars = NO; } // 自动会调用scrollView的contentInsets(比如group样式的tableView的insets.top=64) // self.automaticallyAdjustsScrollViewInsets = YES; }
原文地址:http://blog.csdn.net/pre_eminent/article/details/38925487