开工福利|免费学 2200+ 精品线上课,企业成员人人可得! 了解详情
写点什么

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

评论

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

ICE暴雪正悄悄崛起

DT极客

托管节点池助力用户构建稳定自愈的 Kubernetes 集群

阿里巴巴云原生

Docker 容器 运维 云原生 k8s

数据库表数据量大读写缓慢如何优化(4)【分库分表】

我爱娃哈哈😍

数据库 架构

《我想进大厂》之Zookeeper夺命连环9问

艾小仙

zookeeper

华为18A架构师共享:Netty+Redis+zookeeper+高并发技术栈

996小迁

redis zookeeper 架构 Netty 高并发

OpenAI将k8s扩展至7500个节点以支持机器学习;Graph Diffusion Network提升交通流量预测精度

京东科技开发者

区块链 开源

挖矿系统APP源码搭建

luluhulian

厚积薄发!华为云7篇论文被AAAI收录,2021年AI行业技术风向标看这里!

华为云开发者联盟

人工智能 卷积网络 远程监督 域泛化 油气储集层收集

SpringCloud 从入门到精通15---Sentinel搭建和服务监控

Felix

Kafka基础简介

架构精进之路

kafka 七日更 28天写作 2月春节不断更

程序员成长第一篇:机会与趋势

石云升

28天写作 2月春节不断更 机会与趋势

日记 2021年2月2日(周二)

Changing Lin

个人感悟 2月春节不断更

华为云FusionInsight助力宇宙行打造金融数据湖新标杆

华为云开发者联盟

数据湖 云原生 存储 FusionInsight 华为云

玩转IDEA项目结构Project Structure,打Jar包、模块/依赖管理全搞定

YourBatman

Module IntelliJ IDEA Project Structure

即构自研海量有序数据网络MSDN,构建全球可靠的多云通讯链路

ZEGO即构

挖矿区块链_什么是挖矿 带你详细了解挖矿基础知识

v16629866266

使用pgBackRest并行归档解决wal堆积问题

PostgreSQLChina

数据库 postgresql 开源 开源社区

MySQL安装教程&问题解决

Mars

MySQL 运维

官宣了!Apache ECharts 毕业成为 Apache 软件基金会顶级项目!

百度Geek说

百度 基金会

前端面试必备ES6全方位总结

我是哪吒

程序员 面试 大前端 ES6 2月春节不断更

说说常常被研发忽略的原型模式

后台技术汇

28天写作 2月春节不断更

EXCEL数据如何去重? Python:这事我比你熟

智分析

Python

极客时间产品训练营第三周作业

云随心

产品 作业 产品训练营

产品训练营 第三次作业

Wangyunnfei

利用 Python 分析了某化妆品企业的销售情况,我得出的结论是?

JackTian

Python 数据分析 数据可视化 化妆品 2月春节不断更

Linux-Lab 入门:使用开发板

贾献华

嵌入式 Linux Kenel 开发板 arm boot

产品经理训练营第0期-第三次作业

孙行者

第0期 产品经理训练营 问题

用RabbitMQ了好几年之后,我总结出来5点RabbitMQ的使用心得

四猿外

MQ RabbitMQ 消息队列

Elasticsearch 写一致性原理

escray

七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

Idea工具的各种查找快捷键

小马哥

IntelliJ IDEA 七日更 2月春节不断更

即日起 Jira、Confluence 正式停售本地版,中国客户将无法购买

万事ONES

项目管理 开发者 研发管理 团队协作 CTO

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