大多数浏览器和
Developer App 均支持流媒体播放。
-
Xcode 11 新功能
从探索 Xcode 11 的新功能开启这一周。Xcode 旨在帮助您更快地将创意变为产品。探索编辑和整理源代码的新方式、用于设计和预览用户界面的新功能,以及用于调试和测试的功能改进。概括了解本年度介绍开发者工具的讲座。
资源
相关视频
WWDC19
-
下载
早上好
Xcode 有很多新功能和改进 这些工具所做的一切是为了 协助你进行 产品构思 产品开发和优质产品交付 我们希望这些工具能让你更有效率 因而你能花更多的时间去设想和 实现下一个伟大的事情 所以今年我们将重点放在 提高你使用这些工具的效率和速度上 我们重新考虑了这些工具的基本工作流
让我们来看看 我们首先简要回顾一下 Xcode 10 现在在 Xcode 10 中 有三种主要的编辑器模式 标准模式 助手模式和版本模式 它们位于工具栏的上方 因为它们适用于整个窗口的内容 对于目前的版本编辑器 它有自己的三种模式 比较模式 作者模式和日志模式 你有很多可供使用的功能 你只需要选择你最感兴趣的功能 有很多反馈说希望增加灵活性 所以我们做了一些改进
首先我们把源代码管理日志信息 移动至检查器中 现在它可以随时用于任何文件 因此你可以在需要时将源代码管理日志信息打开 而不会打乱主编辑器区域的内容 接下来 我们想让你 独立地更改每个编辑器窗格模式 因为我们知道不同的文件类型 譬如源代码和故事板 具有非常不同的工作流
因此 我们将助手和作者从主工具栏 移到每个编辑器窗格中 现在你可以为每个编辑器选择正确的模式 如今很多人使用助手来拆分 Xcode 窗口中的多个编辑器 在 Xcode 11 中 你可以随时随地创建拆分
你可以在同一个窗口内进行水平和垂直拆分 今年增加了很多灵活性 这确实比以往任何时候都更容易按照你 想要的方式工作 没有比演示更好的方法了 Brendan 现在将为你展示
谢谢 Ken
今年我们对 Xcode 进行了一些改进 以便你可以更好地控制工作空间
最明显的变化之一是编辑器拆分和助手 现在让我从助手 及其新的配套模式 SwiftUI 画布开始 每个编辑器右上角都有一个选项菜单
这是你控制编辑器行为的地方 我将这个设置为 Editor in Canvas 这意味着 如果存在 SwiftUI 预览 Xcode 将显示它 在这种情况下是没有预览的 所以没什么可看的 但是如果我切换到一个有预览的文件 画布就会出现 Xcode 也会呈现我的 UI 预览 现在助手以同样的方式工作 如果我使用选项菜单切换到助手 Xcode 将显示该文件的生成界面 但如果我切换到一个没有助手的文件 比如这个项目 它就会消失
既不浪费空间 也不需要在切换文件时手动切换模式 好的 当然 当我切换回源文件时 它会记住我所处的状态 助手就会回来
所以这是关于助手和 SwiftUI 的情况 接下来我们来聊聊编辑器拆分 首先 它不再需要助手 因此我们暂时先不谈它 我可以通过几种不同的方式来拆分这个窗口 我将从添加编辑器按钮开始 这个按钮在这个角落里 在选项菜单的旁边 当我单击它时 会有两个独立的编辑器 这些编辑器有自己本身的状态 因此如果我愿意的话 我可以为每个编辑器单独打开代码覆盖 或者作者等模式
新编辑器处于活动状态 如果要将另一个文件加载到其中 我所要做的就是单击该文件 好的
所以我现在有两个编辑器 两个文件 让我们添加第三个 我要拆分左侧的编辑器 因此我将使用左侧编辑器中的 添加编辑器按钮 我将按住 option 键 以便可以将其反方向拆分 图标旋转以显示将要发生的事情
在底部我有一个编辑器 并且它是活跃的 再次点击 我已经加载了该文件
有时候我想用另一种方法来进行操作 有时候我想点击一个文件 并告诉 Xcode 把它放在哪里 为此我要使用目标选择器 我只需按住 option 按钮和 shift 按钮 单击我想要的文件 然后目标选择器会出现 现在我可以点击返回 并在活动的编辑器中打开它 或者我可以用箭头键或者鼠标 插入一个新编辑器 在这个编辑器中打开它 在那里再放一个编辑器 随便我想怎么操作都可以 我也可以使用标准键盘快捷指令来进行操作 比如说切换标签 把它放到这里 或者切换窗口 把它放到这里
这里有很多灵活性和自主功能 所以我打算把这个放在 Globe Scene 的下面 只需按回车即可
现在我有一组想要使用的文件 一个我喜欢的布局 一切都已经设置好 但是如果我想暂时只关注其中一个文件 这种情况下应该怎么办呢 这就是新焦点模式的用途 每个编辑器在关闭按钮旁边的角落 都有一个按钮 如果我点击它 我可以放大这个编辑器来接管整个窗口 现在让我用它来放大 并讨论源代码编辑器中的新功能 源代码编辑器中我最喜欢的新功能之一 当然就是选项菜单中的小地图 现在我打开小地图
把它放大一点 这样你们就能看清楚 小地图是你代码的鸟瞰图 它显示代码的轮廓 并且显示语法高亮
它是用来导航的 小地图会告诉你所在的位置 当你在不同的部分上悬停时 它会告诉你它是什么 所以你知道你要去哪里 它还显示了一些重要的标记 比如文件中哪些地方有变化 或者断点在哪里 下面这里看到的标记 是我用来组织代码的 如果我点击其中一个 你可以看到我们在小地图中渲染了这些标记 源编辑器也是一样的 包括分隔线来帮助你在滚动时锚定 小地图还显示瞬态信息 所以如果我找到了
例如小地图显示了我文件中的所有匹配项 它会隐去一些其他的信息 这样就能突出显示 你就能准确地看到你在哪里 以及你当前匹配项的上下文
好吧 这就是小地图 在源代码方面 我们做了一些改进 比如新的语法高亮选项 像你在这里看到的这些定义 我们添加了新主题 包括浅色和深色的高对比度主题
我们还提供了文档 极大地提高了可读性
我们重新设计了它的样式 使它读起来更像文档 Xcode 现在能更准确地解析文档结构 从而使它更容易维护 让我举一个例子 我这里有一个完全记录的函数 但是如果我为此添加一个新参数 我将把它作为双精度值 我赋予它一个值 然后下面用参数 这样就不会有问题了 现在我可以使用弹出式操作 以及添加文档来填充代码中的空白 最重要的是 它还可以与多个游标一起工作 所以如果你有一堆空白需要填充 那么就非常容易了 好的 我得到了我的文档 现在让我们假设 你的受众非常广泛 你刚刚在你的代码中犯了一个错误 然后你使用代码补全 以及添加文档传播了这个错误 编辑范围内的所有内容 现在可以非常快速地清理你的错误 你的签名 你的代码 现在甚至文档都可以一次性修复
好的 关于源代码编辑器 我想向你展示并且最让我兴奋的最后一点 是变更指示符的增强功能 在我文件的底部 有一个我之前做的改动 变更指示符总是会显示一个提示 提醒你前面所做的更改 提醒你文件中的哪些行已经更改 如果你将鼠标悬停在变更指示符上 它将显示这些更改在这行中的什么位置
但现在你可以单击变更指示符 然后会出现一个新的显示更改命令 该命令会在你的文件中显示行内差异 如果你再次将鼠标悬停在指示符上 则可以确切地看到 它从更改后的内容发生了变化 并且它处于实时状态 因此你所做的任何更新 都会立即反映在差异中 所以这就是我想要在第一个编辑器中 显示的所有内容 让我再次回到大局 我只需再次单击 Focus 按钮
我的布局回到了原来的位置 在我结束之前的最后一件事 我想在这里对我的更改 进行快速的代码浏览 我要点击 Code Review 按钮 它会把活动的编辑器放大到全屏 这样我就能专注于手头的任务 就像焦点模式一样 当我完成后 再次点击 我的布局又回来了 这就是快速浏览 Xcode 11 中的工作流更改 回到 Ken 这 谢谢 Brendan 顺便说一下 我喜欢那个新的小地图 今年还有很多其他很出色的 源代码编辑器特性 比如拼写检查 嵌套代码折叠和行内差异等等 但是我们在过去一年中特别关注的 一个领域是代码补全 以及在更多地方为你提供更好的结果
现在有了编译器控制语句的代码补全 它能够实现前所未有的可靠操作 并且能在更多方面实现操作 比如当你进行数组和枚举的待处理时 好的
现在有了函数重载的代码补全 这些只是我们在 Xcode 11 中改进的 众多补全中的一部分
现在让我们看看源代码编辑器和工作流 今年对 Swift 包管理器来说是一个大年 自从我们推出了大量可用的包以来 Swift 包管理器一直在蓬勃发展 所有这些包都可以让你 在社区的成果的基础上工作
这些包是分解你自己代码的好方法 可以将其分解为更小并且更可测试的部分
今年我们已经完全整合了 Swift 包管理器和 Xcode 你可以使用包为所有平台构建 App 包在整个 Xcode 中获得一流的集成 从源代码控制集成到调试再到测试 直到你通过包所做的所有事情 它的工作原理和你以前做项目时一样 Xcode 使发现和使用包变得很容易 创建包和与世界共享也一样容易 与多个服务的集成整合意味着 你只需单击几下鼠标就可以完成 一些非常棒的代码 我们真心认为你会喜欢使用 Swift 包
Patrick 将在这里向你展示 如何开始使用 Xcode 中的 Swift 包
谢谢 Ken 今天我非常激动地 向大家展示 Xcode 11 中的所有 Swift 包 我将开发我们的旅行 App 其中包括一个旅行计划功能
这个功能现在没有任何天气信息 而天气信息对于任何旅行都是非常重要的 我不想为了在我的 App 中得到这些信息 而做些无用功 幸运的是 我的同事 Rhonda 告诉我 我可以用一个包来做这件事 所以让我们把它添加到我们的项目中
我首先导航到项目编辑器 我将导航到这个项目 在那里我将看到一个新的 Swift 包选项卡
这个选项卡将显示 当前我的项目依赖的所有包
要添加第一个 我将点击 + 按钮 因为我已经登录了我的 GitHub 账户 我可以看到我所有的个人包 组织包 以及位于顶部我收藏的代码仓库
这就是我所说的天气预测包
所以如果我点击 Next Xcode 会在这里提示我输入我的版本信息 Xcode 会自动填写最新的版本以供使用 这就是我想要的 因为我想立即获得最新的代码
当我单击 Next 时 Xcode 将解析我的包 可能具有的任何依赖项 但是因为它是一个非常简单的包 它没有任何依赖项 所以 Xcode 将立即解析
最后我需要选择将我的包产品 链接到哪个 Target 我将在这里选择我的 App Target 完成 所以就是这样 要在项目中设置包 我所要做的就是将它添加到这个 Dependencies 部分
在项目导航器中 我现在有一个 Swift Package Dependencies 项 在这里我可以浏览这个包的所有源代码 就像它是我项目的一部分一样 因为它确实是
太好了我知道哪里需要这个功能 我要把它放在我的 WeatherFetcher.swift 文件中 这个文件目前并没有做很多事情
现在我已经把它配置好了 我可以快速导入预测模块 首先我将使用传入的区域创建一个 Forecast 对象
但我只是在 GitHub 上抓取了这个包 我本身对 API 不是很熟悉 我可以在网上看一下 但是由于 Xcode 中的功能 我可以快速跳转到它的定义 并立即开始浏览它的源代码
向下滚动一点 这个 Observation 方法就像我要用的方法一样 但是我不熟悉这种 Observation 结构 所以我想要深入了解更多关于它的内容 为了展示 Xcode 11 中的一些新搜索功能 我将通过快捷键 Command-Shift-F 来使用查询导航器 我将在这里导航到 Forecast 包 将我的搜索范围缩小到 Forecast 包中
我将搜索 observation 并且只会得到该包的结果 它看起来是在这里定义的
这个枚举类型对我来说有不同的选项 比如从这个 API 返回的指标 比如高温 低温 降水等等 我的方法只需要高温和低温 所以我会使用它们 我将使用快捷键 Command-Shift-J 跳转回项目导航器 并导航回到 WeatherFetcher 这里 然后我将开始实现这个方法 我将使用我的 Observation 对象 我将传入传输给这个方法的日期 就像我之前说的那样 我想要高温和低温
我会很快填充调用语句 从结果中获取高温度和低温度 然后以低温和高温为参数调用 completion 我将以非常相似的方式填充 condition 方法 只从结果中获取条件 太棒了 所以现在当我在模拟器中构建 运行和查看结果时 我应该能够浏览 Plan 选项卡 并且查看我在旧金山旅行中的一些天气信息 看起来我得到了 高温 低温和预期的天气 我旅行快结束的时候好像要下雨了 所以我应该带件夹克 在我的项目中配置一个 Swift 包依赖项 并且立即开始使用它非常简单 这就是天气部分 让我们在回到 Ken 这里
非常感谢 Patrick
目前所有新的包集成 都建立在 Xcode 源代码控制支持之上 今年我们将通过更多功能来完善它 从 Git Stash 开始 它可以让你保存一组更改
你可以在源代码控制菜单这 快速地保存当前工作更改集
当你要查看这些更改并弹出存储时 你可以从源代码控制导航器中进行操作
我们还在此处集成了 源代码管理历史记录视图中的 Cherry-Pick 功能 只要在注释上显示上下文菜单 并选择 Cherry-Pick 功能 因此 分支之间移动更改变得非常容易 你现在可以随时通过新的历史检查器 就像我之前提到的 获取任何文件的源代码控制历史记录 顺便说一下 这对非技术文件也很有用
昨天你看到了许多新的操作系统功能介绍 你可以从今天开始就采用这些功能
一旦你将 iPad App 带到 Mac 上 你就可以在故事板设备栏中 使用新的 Mac 设备开始自定义它
让你的 App 在 Mac 上感觉就像 在家里一样快捷 简单 对于新的 iOS 深色模式 该系统为你完成了大量工作 同样使用设备栏 你可以快速在浅色和深色模式之间切换 确保你的 App 看起来很棒
你需要的选项就在检查器中 比如包含符号大小 追踪系统字体大小 然后当你想要浏览所有符号时 你可以在重新设计的库中执行此操作 然后将它们拖到故事板中 现在对于你自己的资源 如颜色和图像 Asset Catalogs 等等 它们起着非常重要的作用 它们可以让你根据设备类型和明暗情况 而有所改变
最好的一点是 你不需要编写任何代码就可以做到这一点 在 Xcode 11 和 iOS 13 中 你可以创建自己的自定义符号 它们具有新 SF 符号的所有优点 因此符号允许你 指定图案的各种大小和权重 然后在运行时 系统会根据用户的字体大小 可访问性设置 甚至是用户界面中的位置 选择正确的变体 所以这是一种创建动态图案的 非常强大的新方法
在 Xcode 11 中 你现在也可以进行资源本地化
你只需选择一个资源 单击本地化按钮和属性检查器 并选择要自定义的本地化
非常重要的东西
在这里向你展示最新设计工具的是 Lisa
非常感谢 Ken
大家好 今天我很高兴向大家展示 如何使用 iOS 13 的新功能 深色模式和 SF symbols 让我们来看看我们旅游 App 的登录视图
这里的两个图像 电子邮件和密码现在使用的是自定义图像 我想改为使用 SF 符号 这样它们看起来很棒 并且可以使用动态类型 我早些浏览库时 有两张图片我很喜欢 一个叫做 envelope 另一个叫 lock 所以让我们改用它们 首先 要点击电子邮件图标 然后打开检查器
在 Xcode 11 中 在我们这里的图像图标中 我不仅能看到图像名称 而且在我选择使用它们之前 我能看到它们的外观 所以我 是的 我也很喜欢
所以我打算输入 envelope 现在它将显示一个具有不同外观的信封列表 选择 envelope.fill 看起来不错
对于符号配置 我想设置为字体 以便它们可以使用动态类型 我也可以改变字体大小 让我们换一个更大的 标题一 接下来,我想对密码图标执行相同操作 我将键入 lock 并选择 lock.fill 与此风格相匹配
同样我将把配置设置为字体 接下来我想看看我的视图在深色模式下的样子
在设备栏里有一个开关 我可以把它从亮调到暗 我们来操作一下 现在你可以看到视图已经更新
然而这张照片看起来不太对劲 我手提箱的提手不见了 我们来看看发生了什么 我切换回来 哦 我明白了 把手是黑色的 所以它在黑暗的背景下显示不出来 为了解决这个问题 我想深色模式中的这个图像 提供一个新的图像变体 幸运的是 有一个伟大的设计师叫 At 他已经为我创造了一张在黑暗中使用的图像 让我们换用它 我要选择图像 我要选择图像 它会将此图像打开成暗色 首先让我们启用深色模式 然后我可以拖动 At 创建的图像 让我们切换到故事板
现在你可以看到在浅色模式下 它仍然按预期使用原始图像 但当我把它改成深色 现在新图片已经开始使用了 看起来不错 但 At 是一个完美主义者 他认为这两个蓝色按钮 虽然它们在浅色模式下看起来还不错 但在它们不如 At 所想的那样 在深色模式下凸显出来 因此他希望我改为使用不同颜色的橙色 让我们弄清楚如何做到这一点 我要选择按钮 现在 我可以看到 色调颜色设置为 Button color 的自定义颜色 所以要在浅色模式下使用亮色 我想继续使用蓝色按钮 但实际上在深色模式下 我想改变为使用橙色 这就像我对图像所做的一样简单 我将打开检查器启用深色外观 对于深色的外观 我将使用橙色
我们换回来吧
我发现这两个橙色的按钮凸显得更多了 现在看起来好多了 接下来我想看看我的视图在运行时的样子 我要在模拟器中构建并运行
在 Xcode 11 中 有一个称为环境覆盖的新功能
它位于调试栏中 当我点击它时 它会显示一个弹出窗口 我可以改变不同的设置 如系统设置和可访问性设置 因此可以将界面样式从浅改为深 以查看我的视图是如何更新的 我可以设置不同的可访问性设置 例如粗体文本 通过这个覆盖 它允许我在运行时用这些不同的设置 而不需要实际更改模拟器或设备上的设置 我可以 -- 我还可以通过拖动这里的滑块 来更改动态类型大小 你可以看到视图是如何更新的 记得前面 我说这两个图像的 SF 符号 我用字体进行配置 现在 当我拖动设置不同的动态类型时 它们会像文本一样做出反应 通过非常简单的编辑 我认为我的视图在 iOS 13 中看起来很棒 我希望这可以使你的 App 看起来也很棒 谢谢 Ken 请你继续
非常感谢 Lisa
这些新的深色 iOS App 看起来棒极了 你的用户在他们的设备上遇到的一些场景 比如网络或温度条件 这些真的很难复制 这使得它们很难调试 在 Xcode 11 中 你可以改变设备的行为方式 改变网络吞吐量 或者改变设备的热状态 在设备窗口中有一个新的 Device Condition 部分 你可以打开网络连接调节器 并模拟真实的网络场景 或者你可以打开热状态调节器 改变你设备的热状态 让它表现得比实际温度更高 一旦你打开其中一个状态 你就会在你的设备上看到一个指示器 你可以点击那个指示器来查看 到底哪个状态在运行 你可以在这里停止它 或者当你从 Xcode 断开连接时 它会自动为你停止 这是确保你的 App 在所有情况下都运行良好的好方法
随着测试计划的推出 Xcode 11 今年将继续改进测试
现在测试计划允许你 定义一组可以跨 Schema 共享的测试 测试计划可以有任意数量的配置 这些配置允许你指定想要传递什么参数 或想要传递什么环境变量 甚至想要打开什么杀毒软件 当你运行该测试计划时 它将以所有不同的配置运行所有的测试 因此例如 你可以制定一个测试计划 其中包含你的 App 支持的每种语言的配置 当你运行该测试计划时 它将以所有不同语言运行所有测试 所有测试只需一个操作 当然还有测试计划 它们与 Xcode 的服务器配合得很好 你可以在多个设备和模拟器上运行测试 所有这些都是并行的 而且现在的配置比以往任何时候都多 毫无疑问 测试对 Mac 上的 iPad App 以及 SwiftUI 开发的 App 都非常好用 这便是测试
有新的独立 watchOS App 你可以直接部署到 watch 模拟器 不需要 iPhone 模拟器 但今年最大的新闻是 模拟器是建立在 Metal 技术之上的 是的 这意味着用 Metal 技术构建的 App 现在可以在模拟器中运行 它们有惊人的图形性能 所有在 Metal 之上构建的东西 比如 UIKit 也会变得更快
你会看到每秒 60 帧的画面 CPU 的使用减少了 90% 这对电池寿命非常好 是的 我们并没有止步于此
模拟器 Warm Boots 现在也快了两倍 模拟器有了很大的改进
去年我们引入了 OS Signposts 和自定义工具 这样你就可以通过这些工具 将自己的数据显示出来 今年我们将引入层次结构 使你更容易地探索和关联数据
但是当你使用 OS Signposts 时 你所记录的每个类别 现在都将得到自己的踪迹 像这样
然后你可以锁定该踪迹 并轻松地将其与另一个踪迹关联起来 比如 CPU 使用
我们还为 SwiftUI 引入了一个新模板 让你深入了解在新的 body 方法中 构建用户界面所花费的时间
我们从头开始完全重写了 Metal 系统跟踪模板
它利用了新的层级轨道 速度显著加快 达到 10 倍 现在我们不能在今天结束之前 不进行 SwiftUI 的讨论 SwiftUI 是构建用户界面的新方法
SwiftUI 实现了 从编辑到运行到调试的无缝切换 新的预览显示了你真实的 UI 它们将这三件事变成了一个活动
编辑 这就是 UI 开发的未来 因此从新的预览模式到行内编辑器 我们重新考虑了如何构建 UI 代码 我们这样做的目的 是为了提高效率和直接操作 这样你就可以编写更多的代码 而不需要输入任何字符 这是一种全新的文档体验 这将使你快速地编写代码 有很棒的新教程 在帮助你编写代码的同时指导和教授你 现在你不需要创建新项目来开始预览 你可以在现有 App 中使用它们 只需实现新的 UIViewRepresentable 协议 并回传你自己的一个视图 这真的很容易
因此无论你是 iOS macOS watchOS 还是 tvOS App 都可以立即开始使用 这就是 Xcode 11 非常感谢 祝大家会议愉快 [掌声]
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。