WWDC2017 笔记 – Cocoa Touch 中的新特性

栏目: Objective-C · 发布时间: 6年前

内容简介:WWDC2017 笔记 – Cocoa Touch 中的新特性

这篇文章是 What’s New in Cocoa Touch / UIKit Session 201 的一些整理。【基于OC】

转自我的 Blog:Danny’s Dream

Drag Drop 新的交互方式 拖拽

Drag

需要 Drag 的对象要 add 一个 UIDragInteraction ,用法类似于 UIGestureRecognizer 。

UIDragInteraction 有一个 UIDragInteractionDelegate 的代理,可以提供数据,浮起的动画,和自定义的拖动时的动画。

Drop

接收 Drag 的对象的容器,容器要实现一个 UIDropInteractionDelegate 的代理,可以来根据拖入的对象调整当前的界面。

TableView, CollectionView, TextView, TextField, WebView 原生控件都支持

配合剪切板 UIPasteConfiguration 食用会更加。

这个功能手机上可以在 文件 这个系统 app 中体验,里面的 tableview 和 collectionview 的 item 都是支持拖拽的。

File Manager

UIDocumentBrowserViewController

多了一个文件管理的 VC,默认里面会显示当前 app 权限以内的文件,包括本地的和存在 iCloud 的【如果三方 app 在 info.plist 中声明了 UISupportsDocumentBrowser 或者 UIFileSharingEnabled 和 LSSupportsOpeningDocumentsInPlace 的话,可以获得第三方 app 的文件】。

WWDC2017 笔记 – Cocoa Touch 中的新特性 构造方法如下【该构造还提供了文件筛选的能力】:

UIDocumentBrowserViewController* view  = [[UIDocumentBrowserViewController alloc]
                                              initForOpeningFilesWithContentTypes:@[@".txt",@".pages",@".pdf"]];

值得注意的是官方文档中提到,在使用该 VC 时。

– 1. ** 务必把文件管理里的 VC 作为应用的 根 VC,不要把它放在 navigation,tab 或者 split 视图中,也不要通过模态的样式展现出来。**

有上述需求的话用 UIDocumentPickerViewController 来替代。

– 2. 由于文件可能被任何 app 中的 UIDocumentBrowserViewController 修改,所以对文件的操作尽量通过 UIDocument 子类 或者 NSFilePresenter 和 NSFileCoordinator 对象来操作。

新的 UINavigationBar

增加了大的标题栏【觉得并不好看啊】,新增的 api,控制后面的 vc 层级是否需要继续展示大的 title,或者全部使用大的 title。可以在 Mail 的系统 app 中体验这个特性。

//声明大标题
    self.navigationController.navigationBar.prefersLargeTitles = YES;
    //包含三种模式 aoto / always / never (后续 present 的view 是否需要大标题)
    self.navigationController.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeAutomatic;

增加了统一的 navigation 搜索栏,不用再加在 tableview 的 header 中了。

self.navigationController.navigationItem.searchController

现在 navigation bar 是独立的,和你的 content vie 无关,为了更好的处理这些系统 view 的布局的变化,提供了

self.view.safeAreaLayoutGuide // auto layout
  self.view.safeAreaInsets // 代码布局

- (void)viewSafeAreaInsetsDidChange{
  //当布局变化的时候的回调
}

UIScrollView

解决了 navigation vc 和 scrollview 的 contentInset 的冲突的问题,现在 navigation vc 不在修改 contentInset 了。

增加了 contentInsetAdjustmentBehavior 这个属性,默认为 UIScrollViewContentInsetAdjustmentAutomatic ,可以用来自定义滑动时候的便宜效果。

通过 adjustedContentInset 可以获取当前的偏移量。

TableView 的修改

  • 滑动操作
    Row 增加了 UISwipeActionsConfiguration ,用来处理滑动操作。
    UISwipeActionsConfiguration 通过 UIContextualAction 数组来初始化,可以配置不同的动作,左滑右滑等,还能配置 UISwipeActionsConfiguration 的 performsFirstActionWithFullSwipe 【Bool】属性 来决定第一个事件是否响应完整的滑动。
  • 新的分界线

    可以配置相对值和绝对值的 Inset

self.tableView.separatorInsetReference = UITableViewSeparatorInsetFromAutomaticInsets;

Swift 4 和 Foundation 的更新

这里是 OC 版的,我就不展开了,KeyPath 的新类型,还增加了 block 的 KVO 【然鹅 OC 并没有】。

系统级别的手势事件控制

AutoLayout 和 Scroll View

class UIScrollView { var contentLayoutGuide: UILayoutGuide { get } var frameLayoutGuide: UILayoutGuide { get }}

动态类型

用于系统级别的调整大小,获取动态的字体的大小。设计到 Auto Layout 的相关更新。

密码自动填写功能

场景是在 web 上登录账户之后,点击下线 app ,然后调整 appstore,打开 app ,输入密码,这时候可以自动填写。【应该需要网页 / app 端的支持】

这里没有具体展开,有个专门介绍这个 session 【Introducing Password AutoFil】

Asset Catalogs 的调整

现在颜色也能放在 Asset Catalogs 中了,更方便的使用广色域的颜色。代码里可以通过下面的方法获取。【swift 下面可以直接看到颜色,心酸的 OC 啥都没】

UIColor *color = [UIColor colorNamed:@"purple"];

可缩放大小的图片

WWDC2017 笔记 – Cocoa Touch 中的新特性

  • 图片用于不同尺寸的场合
  • 系统基本的 Dynamic type 缩放
  • tab bar 的图片

WWDC2017 笔记 – Cocoa Touch 中的新特性 tabbar image 大的 size ,障碍人士。【使用这个的话,会默认启用】

提升

通过 UIScreen 的 maximumFramesPerSecond 可以获取当前屏幕的刷新率

获取屏幕的刷新率,增强滑动和动画效果。

Metal apps 可以更好的得到提升。

本地化

针对某些国家从右到左的阅读习惯的改变,举得例子是 设置界面的反转。

** That’s all,当然这些是简单的介绍,具体的还有见各个子 session,详细的在官方的文档中均已更新。 **


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Linux内核设计的艺术

Linux内核设计的艺术

新设计团队 / 机械工业出版社华章公司 / 2011-6-20 / 79.00元

关于Linux内核的书已经不计其数,但这本书却是独树一帜的,它的内容代表着Linux内核研究成果的世界顶尖级水平,它在世界范围内首次提出并阐述了操作系统设计的核心指导思想——主奴机制,这是所有操作系统研究者的一笔宝贵财富。本书可能也代表着同类图书的顶尖水平,是一本真正能引导我们较为容易地、极为透彻地理解Linux内核的经典之作,也可能是当前唯一能从本质上指引我们去设计和开发拥有自主知识产权的操作系......一起来看看 《Linux内核设计的艺术》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具