苹果的iOS7推出后,对于所有的应用来说都提出了一个天然的需求——适配不同版本的SDK。目前来说,用iOS6的SDK生成的应用,可以在iOS7的系统上跑,UI上也保持了原来的风格样式,这是苹果做的向下兼容,不过不要小看苹果推行iOS7的决心——苹果发布消息,2014年2月1日开始,AppStore上不接受不是Xcode5的提交。

这样,苹果给所有的开发者留下的就是华山一条路了——升级你的系统吧,Mac10.9都免费发布了,你还要闹哪样?!

虽然每版SDK的推出都会有适配的问题,但个人感觉这次iOS7的SDK的变化是最大的。为了适配iOS7,每个应用都需要做一些事情:

1. icon的变化

iOS7的图标和原先也有变化,这点在Xcode5里面体现的很清楚。

iPhone上来说,需要增加120X120的图标;iPad上来说,需要增加76X76和152X152的图标。并且图标风格推荐和iOS7尽量贴近,苹果仍然会帮你做圆角化(圆角的半径不同了),但阴影效果等不会帮做了。(设计表示躺枪啊)

官方有一份文档可以参考:https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/IconMatrix.html#//apple_ref/doc/uid/TP40006556-CH27

2. 启动界面

启动界面需要增大一些,把原先的status bar的区域加进去。如果原先你的设计就是全屏的,这一步就可以省略了。

3. Retina和4寸屏幕的支持

目前的应用这个应该都有支持了吧,如果你不支持iPhone5的话,AppStore上已经不能提交了。

4.调整layout

由于status bar的原因,坐标计算的原点有变化,很多时候会发现UI上有不少重叠的现象,这个就需要调整了。由于同时要适应iOS6和iOS7,这个调整相应也有一些难度。

苹果官方推荐使用autolayout来帮助做自动的适应(3.5寸和4寸的屏幕)。iOS7里面的autolayout功能说增强了不少,以前我也不愿意使用这个功能,以后的应用中打算试试。

5. Bar Button

Bar Button是指那些系统预设的用在Toolbar或者NavigatorBar上的按钮,UI上有明显改变,大小也有一定的变化,tintColor也变成了barTintColor。

6. 其他UI的细节

UI的变化真的很多,大的框架不会变化,但各处细节改变很多,这个也没法穷举了,打算后面慢慢总结,把自己遇到的分享出来。

iOS6的应用运行在iOS7的系统上时,会模拟出一个iOS6的环境,所以应用仍然会拟物化的显示,UI的控件也都显示iOS6的风格。不过苹果官方说这样效率较低,不建议这么做,目前的情况时过渡,相信会逐渐减少。

不过我iOS6的应用也可以在iOS7系统上运行时也出现过异常。异常是在progressView上出现的,在界面上显示和iOS7一样很细,解决方法是在代码里把frame显式指定了一下。

iOS系统的判定,这个可以通过[[[UIDevice currentDevice] systemVersion] floatValue]来获得。

iOS6和iOS7代码的适配(1)的更多相关文章

  1. iOS6和iOS7代码的适配(3)——坐标适配

    由于iOS7里面status bar和视图是重叠在一起了,所以应用的y坐标就没法和以前一致了,需要重新计算设定.基本上,你的应用用Xcode5运行一下就能看见这个问题,这里写了一个最简单的例子,一个V ...

  2. iOS6和iOS7代码的适配(5)——popOver

    popOver这个空间本身是iPad only的,所以iPhone上见不到,我记得微信上有个这样的弹出框,有扫一扫等几个菜单项,估计这是腾讯自己实现的,用于菜单的扩展. popOver从iOS6到iO ...

  3. iOS6和iOS7代码的适配(4)——tableView

    iOS7上不少控件的样子有了变化(毕竟要扁平化嘛),不过感觉变化最大的肯定非tableView莫属.因为这个控件的高度可定制性,原先是使用及其广泛的,这样的一个改变自然也影响颇大. 1.accesso ...

  4. iOS6和iOS7代码的适配(6) —— NSLocalizedString

    我们的应用都是需要国际化的,字符串也是重要的一环.一般来说,我们是通过一个string资源文件来实现这个目的的,我们需要支持几种语言,就把这个文件本地化多少次.代码中需要用NSLocalizedStr ...

  5. iOS6和iOS7代码的适配(2)——status bar

    用Xcode5运行一下应用,第一个看到的就是status bar的变化.在iOS6中,status bar是系统在处理,应用中不需要考虑这部分,iOS7之后是应用在处理,每个ViewControlle ...

  6. IOS6和IOS7的屏幕适配问题

    自从IOS7出来以后,以前写在IOS6上或者更低版本的程序,跑在IOS7的模拟器上就会出现一些问题.最大的问题就是,所有的UI空间都会统一向上移动20个点(如果空间的y值为0,就会被StatusBar ...

  7. (ios7) 解决代码布局View, ios7 中 subView 高度增加StatusBar20dp的问题,保证Ios6,ios7代码一致

    在ios7 布局中,Status Bar 和 ToolBar ,NavigateBar 等都包含在ViewControl的主View中. 这样原来ios6 的View布局 整体向上移动了20dp,下面 ...

  8. 适配iOS6与iOS7

    适配屏幕其实很简单,但为了保持兼容性以及写的代码的通用性,以及最小的改动代码,本人按照如下的一种方式来适配,可以一劳永逸. 1. 先定义几个宏,分辨表示应用可以使用区域的高度,屏幕可用区域的高度,屏幕 ...

  9. iOS- <项目笔记>iOS6 & iOS7屏幕图片适配

    1.为非视网膜\视网膜屏幕分别准备2份图片,比如: 1> 非视网膜 abc.png 2> 视网膜 abc@2x.png 程序检测视网膜屏到会自动替换@2x 2.程序启动图片 * 程序启动过 ...

随机推荐

  1. 网页设计之PS画渐变线条

    第一种线条的画法:画两条直线,这两条直线是 以背景色为基础 , 一个比背景色深  ,一个比背景色浅``. 第二种线条的画法:第一种画法是 图层样式 渐变叠加   叠加一个  背景色 到中间色 再到背景 ...

  2. Scrapy的架构初探

    Scrapy,Python开发的一个web抓取框架. 1,引言 Python即时网络爬虫启动的目标是一起把互联网变成大数据库.单纯的开放源代码并不是开源的全部,开源的核心是“开放的思想”,聚合最好的想 ...

  3. jQuery创建节点

    注:摘自<锋利的jQuery(第二版)> 创建元素节点 例如要创建两个<li>元素节点,并且要把它们作为<ul>元素节点的子节点添加到DOM节点树上.完成这个任务需 ...

  4. STM32与LPC系列ARM资源之比较

    由于有周立公开发板的影响,LPC系列的开发板在工程师心目中一般是入门的最好型号之一.这次刚好有STM32的竞赛,正好将两者的资源进行比较一下(LPC系列以LPC213X为例). LPC213X包括LP ...

  5. 重启VirtualBox里面的系统提示VT-x features locked or unavailable in MSR错误

    有次不小心设置了一下virtualbox里面的一些配置,然后启动系统时出现了如下提示 在网上找了一些资料尝试了一些方法偶然有一次成功 原来是自己把那个cpu个数设置成了2,改成1就好了,不知道为什么做 ...

  6. jQuery 中的 Ajax $.ajax() load() $.get() $.post() $.getJSON() $.getScript()

    1. $.ajax()方法 参数对象属性如下: 参数名 类型 描述 url String (默认: 当前页地址) 发送请求的地址. type String (默认: "GET") ...

  7. C# 分析搜索引擎url 得到搜索关键字

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  8. floodlight 学习(一)

    其实这个控制器应该没有多少人用了吧,一年多都没更新了,鉴于最近无论如何都要用这个,将学习笔记贴出来吧. 1.FloodlightProvider(Dev) 1.1简介:FloodlightProvid ...

  9. 使用yii中CSecurityManager的一点小技巧

    当我们使用CSecurityManager::encrypt对字符串进行加密, 加密后的字符串是一串乱码(看起来确实像乱码, 具体是什么有待考证), 这不利于我们的下一步操作. 我们可以使用base6 ...

  10. 编绎报错,解决方法objc_msgSend too many arguments to function call,expected 0, have3 (转)

      编绎报错,objc_msgSend too many arguments to function call,expected 0, have3 解决方法: