最终效果图:
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;
}