写点什么

开启 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:004392

评论

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

从 Linux源码 看 Socket(TCP)的accept

赖猫

c++ Linux 后端 服务器 epoll

【云小课】如何初步定位GaussDB(for openGauss)慢SQL

华为云数据库小助手

GaussDB GaussDB(for openGauss) 华为云数据库

经验分享|参与内部开源的心路历程

云智慧AIOps社区

大前端 数据可视化 知识分享 开源治理 flyfish

十月热点:EasyDL八大国产芯片实现模型部署全适配,度目智能门禁机CM-A1重磅发布!

百度大脑

人工智能 百度

自定义View:多点触摸与实现任意拖动图片控

Changing Lin

11月日更

Web 用户体验设计提升实践

Shopee技术团队

大前端 web开发 用户体验 交互设计 可访问性

11.25直播预告|开源与SaaS水火不容?「观测云-可观测之路」第2期技术大咖为您解惑!

观测云

开源数据库风起云涌,openGauss 恰逢其时

openGauss

#数据库

Python Qt GUI设计:QTimer计时器类、QThread多线程类和事件处理类(基础篇—8)

不脱发的程序猿

Python PyQt GUI 计时器 多线程类和事件处理

NodeJs深入浅出之旅:内存控制(下)🐯

空城机

大前端 Node 11月日更

如何穿透ToB客户生命周期的全链增长?

ToB行业头条

盲盒app开发

【Quarkus技术系列】「云原生架构体系」配置参考指南相关的功能机制配置介绍分析

洛神灬殇

入门 配置信息 Quarkus 11月日更

译文 | 科普:Pulsar 和 Kafka 架构对比

Apache Pulsar

kafka 架构 分布式 中间件 Apache Pulsar

浅谈 RDMA 与无损网络

青云技术社区

云计算 云原生 存储

Nginx中间件渗透总结

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

openGauss支持国密SM3和SM4算法

openGauss

#数据库

北鲲云超算携手西安电子科技大学开展高性能计算培训

北鲲云

模块三作业——外包学生管理系统架构设计

覃飞

一文讲透自适应熔断的原理和实现

万俊峰Kevin

微服务 熔断 Go 语言 熔断器 限流熔断

堪称“高并发”教程天花板的Alibaba《基础+实战+源码+面试+架构》

收到请回复

Java 程序员 后端 java面试

双十一还是孤身一人?超强AI神器送你一个"对象"

百度大脑

人工智能 百度

“元宇宙”到底是啥?为啥火了?鼓励探索警惕忽悠

CECBC

一个基于DPoS共识算法的区块链案例解析

Regan Yue

区块链 11月日更 细讲区块链

博文推荐 | Apache Pulsar 对现代数据堆栈至关重要的四个原因

Apache Pulsar

kafka 架构 Apache Pulsar 数据堆栈 DataStax

什么是低代码平台?

石云升

低代码平台 11月日更

Ta们用数字种植绿色山河:牛津博士与储能之变

脑极体

拥抱智能,AI 视频编码技术的新探索

阿里云视频云

阿里云 视频编码 机器视觉 视频编解码 视频云

VR和AR只是入门,真正的元宇宙远不止于此

CECBC

速来!开源中国首届飞算SoFlu组件开发悬赏赛来袭

SoFlu软件机器人

Java

前端的状态管理与时间旅行:San实践篇

百度开发者中心

大前端 san san-store 技术实践

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