这篇文章是 What’s New in Cocoa Touch / UIKit Session 201 的一些整理。【基于OC】
转自个人 Blog: Danny's Dreamjavascript
须要 Drag 的对象要 add 一个 UIDragInteraction ,用法相似于 UIGestureRecognizer 。
UIDragInteraction 有一个 UIDragInteractionDelegate 的代理,能够提供数据,浮起的动画,和自定义的拖动时的动画。java
接收 Drag 的对象的容器,容器要实现一个 UIDropInteractionDelegate 的代理,能够来根据拖入的对象调整当前的界面。web
配合剪切板 UIPasteConfiguration 食用会更加。swift
这个功能手机上能够在 文件 这个系统 app 中体验,里面的 tableview 和 collectionview 的 item 都是支持拖拽的。api
多了一个文件管理的 VC,默认里面会显示当前 app 权限之内的文件,包括本地的和存在 iCloud 的【若是三方 app 在 info.plist 中声明了 UISupportsDocumentBrowser 或者 UIFileSharingEnabled 和 LSSupportsOpeningDocumentsInPlace 的话,能够得到第三方 app 的文件】。数组
UIDocumentBrowserViewController* view = [[UIDocumentBrowserViewController alloc]
initForOpeningFilesWithContentTypes:@[@".txt",@".pages",@".pdf"]];复制代码
值得注意的是官方文档中提到,在使用该 VC 时。session
增长了大的标题栏【以为并很差看啊】,新增的 api,控制后面的 vc 层级是否须要继续展现大的 title,或者所有使用大的 title。能够在 Mail 的系统 app 中体验这个特性。app
//声明大标题
self.navigationController.navigationBar.prefersLargeTitles = YES;
//包含三种模式 aoto / always / never (后续 present 的view 是否须要大标题)
self.navigationController.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeAutomatic;复制代码
增长了统一的 navigation 搜索栏,不用再加在 tableview 的 header 中了。ide
self.navigationController.navigationItem.searchController复制代码
如今 navigation bar 是独立的,和你的 content vie 无关,为了更好的处理这些系统 view 的布局的变化,提供了布局
self.view.safeAreaLayoutGuide // auto layout
self.view.safeAreaInsets // 代码布局
- (void)viewSafeAreaInsetsDidChange{
//当布局变化的时候的回调
}复制代码
解决了 navigation vc 和 scrollview 的 contentInset 的冲突的问题,如今 navigation vc 不在修改 contentInset 了。
增长了 contentInsetAdjustmentBehavior 这个属性,默认为 UIScrollViewContentInsetAdjustmentAutomatic ,能够用来自定义滑动时候的便宜效果。
经过 adjustedContentInset 能够获取当前的偏移量。
滑动操做
Row 增长了 UISwipeActionsConfiguration ,用来处理滑动操做。
UISwipeActionsConfiguration 经过 UIContextualAction 数组来初始化,能够配置不一样的动做,左滑右滑等,还能配置 UISwipeActionsConfiguration 的 performsFirstActionWithFullSwipe 【Bool】属性 来决定第一个事件是否响应完整的滑动。
新的分界线
能够配置相对值和绝对值的 Inset
self.tableView.separatorInsetReference = UITableViewSeparatorInsetFromAutomaticInsets;复制代码
这里是 OC 版的,我就不展开了,KeyPath 的新类型,还增长了 block 的 KVO 【然鹅 OC 并无】。
class UIScrollView { var contentLayoutGuide: UILayoutGuide { get } var frameLayoutGuide: UILayoutGuide { get }}
用于系统级别的调整大小,获取动态的字体的大小。设计到 Auto Layout 的相关更新。
场景是在 web 上登陆帐户以后,点击下线 app ,而后调整 appstore,打开 app ,输入密码,这时候能够自动填写。【应该须要网页 / app 端的支持】
这里没有具体展开,有个专门介绍这个 session 【Introducing Password AutoFil】
如今颜色也能放在 Asset Catalogs 中了,更方便的使用广色域的颜色。代码里能够经过下面的方法获取。【swift 下面能够直接看到颜色,心酸的 OC 啥都没】
UIColor *color = [UIColor colorNamed:@"purple"];复制代码
可缩放大小的图片
经过 UIScreen 的 maximumFramesPerSecond 能够获取当前屏幕的刷新率
获取屏幕的刷新率,加强滑动和动画效果。
Metal apps 能够更好的获得提高。
针对某些国家从右到左的阅读习惯的改变,举得例子是 设置界面的反转。
That’s all,固然这些是简单的介绍,具体的还有见各个子 session,详细的在官方的文档中均已更新。