写点什么

开启 UI 开发新篇章,SwiftUI 5 不再使用 Combine,扩展更多动画功能

  • 2023-07-21
    北京
  • 本文字数:1081 字

    阅读完需:约 4 分钟

开启UI开发新篇章,SwiftUI 5 不再使用Combine,扩展更多动画功能

在 WWDC 2023 中,苹果展示了其 UI 编程声明式框架的最新迭代。SwiftUI 5 使用全新的 Observation 框架取代 Combine,彻底改变了其反应式的基础。此外,这次迭代中还增加了对分阶段动画、 ScrollView 优化,新手势等等的支持。


全新 Observation 框架的采用带来了众多优势,其中包括语法的简化和语义的精简、跟踪选项和集合的可能性,以及对 State 和 Environment 用法的扩展以取代 StateObject 和 EnvironmentObjectObservation 框架还取消了使用 @Published 属性包装器注解所有可被观测的属性的要求,开发者可通过在类的层面上使用 @Observable 宏让该类的所有属性可被观测,如下面例子所示:


@Observable class Library {    var books: [Book] = [Book(), Book(), Book()]}
复制代码


对希望避免观测到特定属性的特殊情况而言,开发者可在该属性上使用 ObservationIgnored 宏。有意思的是,对所有使用 SwiftUI 和 Combine 构建应用的开发者而言,新框架的采用可逐步进行


Observation 框架无疑是一项重大创新,它将改变开发者构建 SwiftUI 代码的方式。SwiftUI 的最新迭代中同样包含对框架的渐进式改进,意在扩展其功能或追加开发者们习惯在 UIKit 中见到的功能。


对 ScrollView 中 scrollPosition 的追踪可能无疑是个颇受欢迎的小改进。在视图滚动到一个新位置时,scrollPosition 修改器将更新状态变量并将其识别为第一可见视图。反之,开发者也可赋值该状态变量以跳转到任意特定视图中。此外,开发者也可通过全新 ScrollTargetBehaviour 协议选择一个滚动行为。


随着对完成处理其的引入,SwiftUI 动画也得到了细微但却功能强大的扩展。这个不起眼的新功能让分段动画的定义成为可能,比如分阶段或分状态的(循环)动画。


开发者也可使用全新的 PhaseAnimator 视图迭代一系列的阶段,并为每一阶段定义特定动画,而不再需要直接通过完成处理器手动连接各个阶段才能构建分段动画。


SwiftUI 5 中也引入了两个新的手势,RotateGesture 和 MagnifyGesture,用于追踪视图的旋转和放大。RotateGesture 取代了原先的 RotationGesture,而 MagnifyGesture 则取代了原先的 MagnificationGesture。这两个新增的类提供了更为简化的语法,让视图的旋转和放大变换更易于应对。


这些新功能将于 iOS 17、iPadOS 17、macOS 17,以及苹果在明年秋季发布的其他操作系统中开始使用。关于 SwiftUI 中新功能的完整概述,可参见苹果于 WWDC 2023 的演示


原文链接

SwiftUI 5 Leaves Combine behind, Extends Animations, and More


相关阅读:

苹果推出 SwiftData,持久化框架的技术革新

Swift 5.8新特性预览:支持函数向后部署

2023-07-21 08:004846

评论

发布
暂无评论
发现更多内容

2022 年行摄回忆录

穿过生命散发芬芳

盘点2022 行摄回忆录

华为云发布CodeArts Check代码检查服务,守护软件质量和安全

IT科技苏辞

业务-研发一体化管理平台,存在吗?

FinFish

小程序 小程序管理平台 小程序技术

华为云服务治理 — 隔离仓的作用

秃头也爱科技

华为云发布CodeArts Req需求管理工具,让需求管理化繁为简

科技怪授

华为云

ZBC即将登录Coinbase Institutional,生态开年迎新利好

股市老人

大型软件通过“云应用”即点即用,能解决元宇宙的开发之难吗?

B Impact

ZBC即将登录Coinbase Institutional,生态开年迎新利好

鳄鱼视界

爆竹声响又是一年春节到 归心似箭阖家团圆享美食

极客天地

华为云服务治理 | 服务治理的一般性原则

与时俱进的时代

2022年的魔力象限领导者,为什么是华为数通?

白洞计划

华为

ZBC即将登录Coinbase Institutional,2023年以全新姿态出发

BlockChain先知

揭开华为云CodeArts TestPlan启发式测试设计神秘面纱!

科技怪授

华为云

Datawhale学习笔记【阿里云天池 金融风控-贷款违约预测】task1 赛题理解

一颗小树

机器学习 机器学习笔记

“会说话”的产品包装?“码”上查看!

旺链科技

区块链 区块链技术 区块链溯源

标准发布 |《企业数字化成熟度模型IOMM》(中小企业)发布

信通院IOMM数字化转型团队

数字化转型 IOMM ICT深度观察

简述JavaScript异步函数 async/await

devpoint

JavaScript Async await es7

华为云代码检查插件(CloudIDE版本)使用指南

与时俱进的时代

数据中心的浪浪山

脑极体

ZBC即将登录Coinbase Institutional,生态开年迎新利好

西柚子

推荐一款较好的小程序管理平台

FinFish

小程序 小程序管理平台 小程序管理

简述JavaScript键盘事件

devpoint

JavaScript 事件监听 事件冒泡 键盘事件

90%开发都会忽略的性能调优点:针对返回大数据量的接口,10分钟内找到提升带宽瓶颈的突破口

KINDLING

Java 性能调优 响应时间 ebpf 排障

Linux Radix Tree详解

Linux内核拾遗

数据结构 Linux内核 Radix Tree

DCS分布式缓存服务实例类型介绍

秃头也爱科技

「Go框架」剖析iris中错误码路由的运行机制

Go学堂

golang 开源 个人成长 签约计划第三季

2022年度 FinClip 扩展SDK推荐!

FN0

小程序 sdk SDK 教程

华为云服务治理 | 微服务常见故障模式

IT科技苏辞

高效节能 | 智慧灯杆综合管理解决方案

AIRIOT

物联网 智慧灯杆

【Dubbo3终极特性】「流量治理体系」一文教你如何搭建Dubbo3的控制台服务Dubbo-Admin

码界西柚

dubbo RPC Dubbo3 Dubbo-Admin

开启UI开发新篇章,SwiftUI 5 不再使用Combine,扩展更多动画功能_Android/iOS_Sergio De Simone_InfoQ精选文章