WWDC 201 What's new in cocoa touch

这是每一年必看的一个 session,基本上是 iOS 的 API 更新的总章,会告诉你都有哪几个点的 feature。今年也不例外,苹果的着眼点是:swift

  • Productivity
  • UI refinements
  • API enhancement

Productivity

Drag and drop

这是今年的重头戏,很是强大。你能够在 照片 app 中选择多张图,而后拖入 email.app,他就成了 email 的附件。api

苹果为了开发者能作好这方面的开发,准备了四讲 Sessionxcode

这里苹果也没展开具体说 API 怎么用,只是列了一下让一个 customView 支持 drag 和 drop 分别要实现什么。安全

  • Drop

  • Drag

我这里也就不展开去写 demo 了,等后面四个 session 一块儿来玩一下这个 API。session

File ManageMent

因为 iOS 11 苹果给了一个新的 app —— files。app

苹果很大方的把 files 的 view controller 拿出来给大伙儿用。ide

这个东西看起来不起眼,然而他具备高度的可定制性;能够访问本地文件或者云盘文件.布局

具体详细介绍,见:字体

UI Refinements

iOS 11 在 UIKit 上最明显的变化就是 WinPhone 样子的 NavigationBar 了。ui

NavigationBar 的 title 支持了大字模式。

再滚上去以后,就又会变成咱们熟悉的 title

而开启大字模式,仅需这两个 API

能够看最上面那张效果图里的 Message 的 navigaitonbar,它内置了搜索框。咱们经过这样的代码也能够启用它:

而后,苹果竟然把 RefreshControl 也坐进去了。。。

苹果听说这个 feature 你如果用了 大字模式 + UIRefreshControl。这个是自动实现的。

因而乎坑爹的地方开始了:

这个东西是 NavigationBar......高度变了,变厚了好多。因而咱们当初若谁图省事用 44 来拿高度的,全都会挂出去。

苹果给了一个新的 API,来标记这块可变区域

SafeAreaInsets,也不知道谁想出来的名字。

对应的代码是这样的:

而后苹果自豪的说,UIScrollview 能帮你自动完成不少适配问题。你甚至不须要写一行代码。

固然不能 100% 保证,若是你想本身 handle。你能够经过修改这些 API:

长成这模样的 API 你们应该很熟悉吧。当初 iOS 7 开始变成全屏模式以后,也有个相似的东西。用很差就会 app 上面顶出来 64px 的空白区域。

因此我我的以为,不要对这个 api 抱有太大但愿。

以及事实上确实如此,我成功用 xcode 9 把礼物说跑起来了,兼容性问题出现最大的地方就是 navigationbar 的行为问题。

TableView

TableView 的修改,能够参考 Mail App,多加了一些 Cell 的侧滑手势:

实现起来蛮容易的,且 UIKit 自动帮你完成不少事情:

API enhancement

Swift4 And Foundation

  • Codable protocol

这个东西仍是蛮强大的,你只须要在 enum/struct/class 上实现 codable 这个协议,默认的 protocol extension 就能帮你完成 NSCoding/JSON/Plist 的序列化与反序列化。

但事实上吧...并无那么智能,他有点像 Android 的 Gson 库。仅支持 key 和 property 一一对应。若是不对应的话,仍是要手动实现的。

不过怎么说仍是比原来用 SwiftyJSON 实现起来优雅多了。

  • KeyPath

苹果愈加的让代码变得更安全,在 OC 的历史包袱上,咱们知道 selector、valueForKeyPath 之类的东西全都是用字符串来描述的。

这类东西没有补全,写起来很容易出问题。Swift 3 攻克了 Selector 的问题,Swift 4 让 KeyPath 也变得安全了。

  • block-based KVO

既然 KeyPath 被翻新了,苹果就顺路把 KVO 也收拾了

代码比之前简洁太多了。

UIKit

  • preferredScreenEdgesDeferringSystemGestures() -> UIRectEdge

UIViewController 的一个 method,用来 defer 系统的各类手势,例如上边缘下滑唤出 notificationCenter,提高用户体验。

  • AutoLayout and ScrollView

ScrollView 添加了两个 layoutGuide:ContentLayoutGuide 和 frameLayoutGuide 来帮助咱们解决 ScrollView 上加 Autolayout 的问题,真是激动人心,然而咱们国内开发者无法用

  • dynamic type

在过去,若是咱们想支持大字模式的话。咱们须要用 UIFont 的 preferredFont Api,然而国内开发者们不多用。由于咱们设计师用的兰亭细黑之类的,特殊字体。

新的 API 就愉快多了:

甚至能够这样:

因而 Autolayout 也添加了相关的功能,毕竟布局是总体的,当字号跟着变大了,行距之类的都要进行调整。

这个 feature 一样适用于 VFL 和 UIStackView

Password autofill

强行借鉴 1Password

Asset Catalogs

  • 能够用命名 color 了,好比直接 themeColor,而不用更像以前那样须要本身写 Enum
  • PDF 的图片能够根据 dynamicType 进行缩放
  • Tabbar 在大字模式下 会有按住显示 tabbar 内容的 feature。若是你用了 PDF 的图片,体验会好不少。

ProMotion 刷新率

由于 iPad Pro 120FPS,因此 UIScreen 提供了获取设备最大的刷新率的 API。咱们能够根据本身的 app,动态调整刷新率。

相关文章
相关标签/搜索