更新到iOS 7后,iOS 6中的所有视图都会向上移动,并被导航栏隐藏

我今天将iPhone更新为iOS 7,并重新编译我的应用程序,并且.xib文件中的所有视图和设备都被移动,并且其上半部分被导航栏隐藏.在我的viewController我设置self.edgesForExtendedLayout = UIRectEdgeNone;而在iOS 7上,现在一切看起来不错,但是当我使用Deployment Target 6.0编译我的项目并在iOS 6设备上测试时,导航栏再次隐藏所有视图.如何让它们在iOS 7和iOS 6上同时观看?我现在不想破坏iOS 6的支持.

解决方法

所以这是我做的.这不是最干净的代码,你需要确保你不会有滚动视图的奇怪的结果.

基本上我把所有的子视图都移动到导航栏的高度(45).对于我的滚动浏览/桌面浏览,在我的应用程序中总是进入屏幕的底部,我将其高度降低了45,这样您仍然可以达到目的.这是一些应用程序的解决方案,但您应该确保所有的滚动和表格视图都是这样缩小的.

因为它不是递归的,所以您不必担心在scrollviews或任何类似的表视图.

- (void)viewDidLoad
{
    [super viewDidLoad];

    if (SYstem_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) {

        self.edgesForExtendedLayout = UIRectEdgeNone;

    } else {
        [self moveAllSubviewsDown];
    }

}

- (void) moveAllSubviewsDown{
    float barHeight = 45.0;
    for (UIView *view in self.view.subviews) {

        if ([view isKindOfClass:[UIScrollView class]]) {
            view.frame = CGRectMake(view.frame.origin.x,view.frame.origin.y + barHeight,view.frame.size.width,view.frame.size.height - barHeight);
        } else {
            view.frame = CGRectMake(view.frame.origin.x,view.frame.size.height);
        }
    }
}

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...