iOS7新特性的兼容性处理方法

搬砖也得尊重出处!转载自 这篇文章

1.UINavigationBar
在iOS7以下所有的UINavigationBar都采用拟物化的界面,给人的感觉很有立体感,但是在iOS7中所有的界面使用的扁平化的界面,这让我们的app在iOS7的系统上看起来不是那么的协调。
把UINavigationBar变为扁平化的就是加一个背景图片

 

[self.navigationController.navigationBarsetBackgroundImage:navBackImage forBarMetrics:UIBarMetricsDefault];

 

2.UIButton

 

在iOS7上出现模糊装的,看起来不是很明显,

修复办法给
UIButton加上边框,代码如下:

这需要引用:

#import <QuartzCore/QuartzCore.h>

button.layer.cornerRadius=8;
heightBtn.layer.borderWidth=1.0f;
heightBtn.layer.borderColor=[UIColorlightGrayColor].CGColor;

 

3.UIActionSheet
在iOS7上如果在UIActionSheet中加上UIPickerView会显示不完全,原因是在iOS7上显示的高度不够,它是相对与整个屏幕的位置定位的,所以应该修改UIActionSheet显示的高度。
4.UITabBar
在iOS7中如果想隐藏UITabBar只是使用
self.tabBarController.tabBar.hidden = YES;
是会隐藏UITabBar,但是底部会留下阴影,也就是整个屏幕不会全部显示,解决办法是在self.hidesBottomBarWhenPushed = YES;当推送的时候把UITabBar隐藏掉就行了,然后你可以重新设计UIView的大小等等。

4、UITableViewCell
    在之前的版本中UITableViewCell的backgroundColor是透明背景的,但是在iOS7中是默认白色背景,如果在TableView后面加入背景的应用要注意了,在创建UITableViewCell的时候把backgroundColor设置为[UIColor clearColor];

5、UIViewController的变化
     之前的版本中UIViewController中的view在显示后会自动调整为去掉导航栏的高度的。这样我们摆放控件的时候就会在导航栏的下面显示。但是在iOS7中UIViewController的wantsFullScreenLayout已经被舍弃了,不再提供此属性,所有的UIViewController创建后默认就是full Screen的,因此如果带导航栏的应用界面中的部分控件会被导航栏覆盖掉。
     要解决这中情况可以使用iOS7中UIViewController新增的属性extendedLayoutIncludesOpaqueBars和edgesForExtendedLayout来解决。其中这个属性指定了当Bar使用了不透明图片时,视图是否延伸至Bar所在区域,默认值时NO。而edgesForExtendedLayout则是表示视图是否覆盖到四周的区域,默认是UIRectEdgeAll,即上下左右四个方向都会覆盖,那么为让顶部不进行延伸到导航栏覆盖的区域,我们可以把顶部区域延伸去掉。实现代码如下:

self.extendedLayoutIncludesOpaqueBars = NO;

self.edgesForExtendedLayout = UIRectEdgeBottom | UIRectEdgeLeft | UIRectEdgeRight;

6、无法再获取MAC地址
      在iOS7中无法再获取到MAC地址了,他会固定返回02:00:00:00:00:00。在之前版本中使用MAC地址的应用可能要做调整了。

7、iOS7(Xcode5)中隐藏状态栏的方法
       将4s的系统升级到了扁平化的iOS7,如丝般顺滑,比预想的要完美。很多不经意间发现的小细节让人发出雅典娜之惊叹。所以狗日的不要相信那些媒体的胡说八道,那些人根本就没有体会过即能写出各种奇谈怪论。纸上得来终觉浅,绝知此事需躬行。推荐升级安装。

      然后是Xcode5,整个界面也是冲着扁平化的方向,怎么说呢,简约而不简单。总之就是更好用了。赶紧将以前写的一些app放Xcode5下编译,不少问题出来了。

     首当其冲就是界面上的状态栏了,iOS7默认程序就是全屏(fullscreen)模式,用半透明的方法将状态栏挡在后面,感觉有点怪怪的

    要干掉它还真不容易,在iOS7之前,我们可以这样干:

    [[UIApplication sharedApplication] setStatusBarHidden:YES];

    但是现在无效了,怎么解?Google了一下,这么干:在app的plist文件中,添加两个属性:UIStatusBarHidden和UIViewControllerBasedStatusBarAppearance,顾名思义,就是用来设置状态栏的,如图所示:

 

posted @ 2014-02-10 10:53  卓毅  阅读(385)  评论(0编辑  收藏  举报