IOS系统|WWDC 2020——关于 Mac 未来的半成品答卷( 四 )


IOS系统|WWDC 2020——关于 Mac 未来的半成品答卷
文章图片

文章图片

学会适应 Mac 口味的 Catalyst 应用 , 看起来更加自然
当然 , 天下没有免费的午餐 。要想获得新版 Mac Catalyst 的更好效果 , 开发者也要相应付出更多的劳动 , 例如在代码中增加专门用于 Mac 的布局安排 , 为 iPad 的尺寸和分辨率设计的图片资源也需要搭配对应的 Mac 版本 。Apple 建议 , 如果开发者追求适配效率、希望优先保持与 iPad 的兼容性和原有界面布局 , 则可以考虑继续使用 iPad idiom 。否则 , 就可以考虑选择 Mac idiom 获得更原生的适配效果 。
SwiftUI
不过 , Mac Catalyst 制作的 Mac 应用再「惟妙惟肖」 , 毕竟也只是模仿和妥协;在Apple 的规划中 , 各个平台「大一统」的目标 , 最终还是要通过新一代框架——SwiftUI 来实现 。
什么是 SwiftUI?用官方的话说 , 这是一种使用「声明式」(declarative)语法 , 在所有 Apple 平台上构建用户界面的简便方式 。
沿用之前做菜的比方 , 如果说直接用 UIKit 和 AppKit 开发应用是亲自下厨 , 那么用 SwiftUI 就类似于找了一个帮手 , 你只要向他描述想要实现的效果 , 他会负责为你找齐所需的食材并调出当地适销的口味 。
当然 , 有人使唤固然省事 , 但也不是没有隐患:请来的帮手未必能准确领会你的意图 , 也未必掌握做出你想要的菜所需的全部技能 。
这正是 SwiftUI 在去年推出后受批评最多的两个问题:首先 , SwiftUI 实现的效果往往与开发者想象的有较大区别 , 声明式语法执行的准确度没有保障;其次 , SwiftUI 并不支持 AppKit 和 UIKit 具备的全部功能 , 因此开发者很多时候还是得挽起袖子直接写相应的 AppKit 或 UIKit 代码 。
今年 , Apple 宣布开发者以后可以只使用 SwiftUI 开发整个应用 , 而不是像以前一样需要将 SwiftUI 代码嵌入在其他框架的代码中 。同时 , 新版系统的小部件(widget)等功能将只能使用 SwiftUI 开发 。
IOS系统|WWDC 2020——关于 Mac 未来的半成品答卷
文章图片

文章图片

使用 SwiftUI 让开发者可以通过相同的代码在不同平台上获取最佳显示效果
尽管这些变化并不意味着 SwiftUI 能在短时间内完全取代 AppKit 和 UIKit , 但 SwiftUI 将成为统领 Apple 平台界面开发的主要框架 , 已经成为不少开发者的共识 。
显然 , 如果 Apple 今年的 UI 开发框架更新能够一一兑现 , 那么用户能感受到的进步将是明显的 。然而 , 仍然有一些理由让我们保持谨慎乐观 。
首先 , 界面并不是开发的全部 。无论 AppKit、UIKit 还是 SwiftUI 都只是用于搭建用户界面的开发框架 , 而界面设计只是应用开发中的诸多环节之一 。在界面之下诸多更为底层的部分 , iOS 和 macOS 仍然存在很大差异 , 而这是 Mac Catalyst 力所不及的 。
最典型的例子可能就是自动化 。macOS 中 , 系统和应用之间可以通过 Apple Event 传递指令和信息;帮助用户实现自动化功能的 Apple Script 脚本和 Automator 应用也建立在 Apple Event 的基础上 。而 iOS 在早期一直缺乏类似的框架 , 只是到了晚近才通过 SiriKit 为应用提供了一定的自动化能力 , 但在功能性、通用性上都暂时还远达不到 Apple Events 的高度 。因此 , 对于那些看重自动化功能的应用而言 , Apple 的框架在现阶段还没有提供足够的跨平台能力 。
IOS系统|WWDC 2020——关于 Mac 未来的半成品答卷
文章图片

文章图片


推荐阅读