设为首页 加入收藏

TOP

iOS 版本更新摘要(三)iOS 8.x(三)
2017-10-11 16:24:51 】 浏览:7092
Tags:iOS 版本 更新 摘要 8.x
体验中操作连贯性的,一个重要特性。Handoff 让用户可以跨设备执行同一个操作。比如,你在 Mac 的 Safari 上看一篇很长的文章,当你转到另外一个 iOS 设备上的 Safari 时,这篇文章的浏览进度是和 Mac 同步的。Handoff 可以让交互体验做到无缝连接。

    

    如果你的 App 想使用这个功能,你只需要实现一个很小的 API 就好了。这样的话,每一个用户正在做的事情都会放在一个对象里面,这个对象内有恢复此次操作的关键数据。当用户选择继续这次操作时,这个对象就会传到需要恢复操作的设备上。为此,有一些代理会在恰当的时期去执行并更新操作状态,例如用户操作数据的对象刚传到设备上的时候。

 

    如果进行一个操作需要的数据比基础数据多,新拉起的 app 有机会和原来的 app 建立一个数据传输流。文件操作类的 app 默认支持该功能,前提是操作的是 iCloud 共享的文件。

 

#Supporting New Screen Sizes and Scales

    

    这段我没有按原文直译过来。(关键是我size class用的不是很好,误导了阅读的人就不好了,23333)

    与 iOS 8 一起问世的是两个有划时代意义的手机型号:iPhone 6 和 iPhone 6 Plus。不过我要吐槽两点:

    1. Apple 打了自己的脸,6 系列手机无法单手操作了。(其实 iPhone 6 及后续机型轻轻双触 Home 键,就可以单手操作了,试试看吧)

    2. iPhone 6 Plus 是所有 iPhone 里面运行内存性价比最低的手机,大尺寸小内存,容易内存耗尽,闪退率最高的机型。(而大多数开发者都不处理内存警告的通知)

    

    简单说一下这个适配的更新吧。

    1. iOS 8 开始可以使用 Metal 给 6 Plus 更好的体验,这个估计国内没几个人做过。

    2. Size Class,可以适配所有的尺寸,老板再也不用担心你开发的慢了。

    3. iOS 8 开始可以使用 storyboard 作为启动页面了,事实上你新建项目的时候就会自动生成一个。

    

###Traits Describe the Size Class and Scale of an Interface

 

    iOS 8 加入了 Size Class 作为 UI 搭建的一个特性。这个特性把 页面分成两种:常规型(regular)和紧凑型(compact)。常规的用来代表一个大的屏幕尺寸,例如 iPad、或者一些大的视图:iPhone 的滚动视图。每种设备都被定义了一种 Size Class,包括横竖屏状态。原文有几张示意图,我就不贴了。

 

    一个页面可以关联多种 Size Class。这个可以很好的处理下面这种情况:一个小的页面需要在一个大页面下展示,你可以选一个Size Class来放大图,用另一个你喜欢的来放小图。当然为了适配 Size Class,API有所变动:

    1. UITraitCollection 这个类是用来描述一个对象的特征的集合。表征一个对象的 Size Class、缩放比例和特有平台的描述(为了合理翻译 idiom 这个单词,我看了好多 Apple 的文档,最后觉得这是 Apple 用于说明不同平台语言特性的,暗指 iOS 不同运行平台的特有 API)。UIScreen、UIViewController 和 UIView 都是支持 UITraitEnvironment 的代理的,所以他们都有特征的集合。你可以检索某个对象的特征,并可以在他变化时做一些操作。

    2. UIImageAsset 这个类可以按照图片的特性对他们进行编组管理。把带有同一特征的相似的图片合并到一个资源下,然后自动检索并使这个资源正确拥有对应特征集合的图片。为此 UIImage 也做了一些修改。

    3. 支持 UIAppearance 协议的类,可以基于自己特征集合定义一个对象的外观。

    4. UIViewController 新增了查询子页面特征集合的能力。你可以用这个方法 viewWillTransitionToSize:withTransitionCoordinator: 去改变布局出来的页面的 Size Class。

    

    Xcode 6 开始支持统一的故事版。在故事版上,你可以任意操作基于每个 Size Class 的 ViewConrtoller 上面的 views。你可以使用同一个故事版构建不同的 Size Class 来做两个相似的页面。首先,建立一个通用的故事版,然后自定义每一个 Size Class 里面的样式内容。你使用 Xcode 6 来检测 app 在各个 Size Class 下的兼容情况。

 

###Supporting New Screen Scales

 

    从6 Plus 开始,高清晰度的R屏投入了使用。为了用好这块屏幕,6 Plus 是用了 414 x 736 的Size 和 1242 x 2208 pixels的分辨率(对应3.0的Scale)。不过在显示的时候,UIKit会把它渲染为1080P的。为了适应这个尺寸,ArtWork中需要加入 @3x 的图片,6 Plus在加载的时候会优先加载 @3x 的素材。

 

    在图形app中使用 Metal 或者 OpenGL ES,可以更加容易的绘制精确图形,而不需要其他大量的取样。这一点对于需要高密度计算的 3D app 来说很关键。还有,建立渲染的缓冲区也可以很好的解决这类问题。

 

    UIScreen 提供了一个新的属性 nativeScale,这个属性用来表示 native 页面的 Scale 值。当这个值和 Screen 的 scale 属性一样的时候,可以按照 Screen 同样的渲染像素尺寸进行渲染。如果不一样的时候,你可以在显示之前给出取样范围。

 

    如果你正在写一个 OpenGL ES 的 app,GLKView 会自动为你创建一个基于页面 Size 和 contentScaleFactor 属性值的缓冲区对象。当这个View被加入到window上时,需要把这个值赋值给window.screen.nativeScale。

    * Listing 1:

    > - (void) didMoveToWindow {

    >     self.contentScaleFactor = self.window.screen.nativeScale;

    > }

 

    如果你写的是基于 Metal 的,也有和上面的类似的操作。另外,每当页面 size 改变时,在这之前,你要让 Meta

首页 上一页 1 2 3 4 5 6 下一页 尾页 3/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇iOS多线程开发之GCD(基础篇) 下一篇推荐一些iOS博客

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目