因为各种原因。我们的程序须要同一时候支持iOS 7以及之前的版本号(比如iOS 6)。也就是说开发人员不得不同一时候在iOS 7和iOS 6之间进行开发。实际上开发人员对此是比較讨厌的。
iOS 7中的布局问题
以下是很easy的一个程序,执行在iOS 6中的界面:
而要是执行在iOS 7的模拟器中。会看不到label了:
这是为什么呢?我们对其reveal一下看看吧:
从上图能够看出,实际上label躲在NavigationBar后面了。
在iOS 7中,苹果引入了一个新的属性。叫做[UIViewController
setEdgesForExtendedLayout:]
。它的默认值为UIRectEdgeAll
。当你的容器是navigation
controller时。默认的布局将从navigation bar的顶部開始。这就是为什么全部的UI元素都往上漂移了44pt。
修复这个问题的高速方法就是在方法- (void)viewDidLoad
中加入例如以下一行代码:
1
|
|
这样问题就修复了。
iOS 6执行异常
如今假设在iOS 6中执行程序,会遇到以下这种执行时异常错误:
1
|
|
全部仅仅能在iOS 7中执行的API须要又一次封装一下,例如以下代码所看到的:
1 2 3 4 |
|
Xcode 4编译错误
有些机器可能还在使用Xcode 4.6,当用4.6来编译代码时,会遇到以下的编译错误:
1 2 |
|
为了避免这个错误。能够创建以下的这个宏:
1 2 3 |
|
然后在须要的地方将iOS 7的代码包装一下就可以:
1 2 3 |
|
UILabel不一致的background
对于UILabel。在iOS 7中它的background颜色默认是clearColor,而在iOS 6中默认的是白色。
所以。我们最好在代码中对label的background颜色进行明白的设置:
1
|
|
全屏时隐藏状态栏
在iOS 6中。当调用presentViewController
时,默认的modal
screen将是全屏(UIModalPresentationFullScreen
)。为了在iOS
7中也能获得同样的效果。我们能够在modal controller中加入例如以下代码:
1 2 3 4 |
|
UIToolbar barStyle
有时候,我们会将UIToolbar与系统键盘结合起来使用。而在iOS 6中的键盘是黝黑色的。此时toolbar的style一般也是类似的,例如以下代码所看到的:
1
|
|
而在iOS 7中。键盘变为了亮色,因此我们须要依据不同的iOS 版本号,设置不同的bar style。
1 2 3 4 5 6 7 8 |
|
很多其它
上面这些技巧是我眼下在开发中遇到的,肯定还有很多其它的技巧,大家要是知道的话能够告诉我。
最后送大家一个图。看看相关差异吧: