写点什么

iOS 26 的 SwiftUI 拥抱 LiquidGlass,并引入 WebView 和富文本编辑

  • 2025-06-30
    北京
  • 本文字数:1231 字

    阅读完需:约 4 分钟

大小:576.75K时长:03:16
iOS 26的SwiftUI拥抱LiquidGlass,并引入WebView和富文本编辑

在 2025 年的全球开发者大会(WWDC)上,苹果公司发布了其声明式UI框架SwiftUI的最新版本,引入了两项重大更新:一种新的 SwiftUI 原生WebView类型和在 TextView 控件中支持富文本编辑。此次更新还带来了大量额外的改进和新的性能工具。

 

新的WebView类型可以在应用中显示 HTML、CSS 和 JavaScript 内容。默认情况下,该视图提供了用户熟悉的浏览体验,包括支持使用链接在网页之间导航,以及前进和后退按钮。然而,你可以通过将WebViewWebPage关联来完全自定义导航行为。这是一个@Observable类,暴露了网页内容属性,并允许跟踪它们的变化。例如,你可以通过观察currentNavigationEvent来跟踪页面何时完全加载。

 

为了使富文本编辑易于实现,iOS 26 中的 SwiftUI 扩展了TextEditor视图,支持AttributedString。正如苹果在WWDC上展示的那样,启用富文本编辑就像在初始化TextEditor时更改绑定状态的类型一样简单:


struct RichEditorView: View {    @State private var text = AttributedString()

var body: some View { TextEditor(text: $text) }}
复制代码


苹果提供了一个代码示例,开发者可以使用它来探索全部的功能范围,包括添加自定义控件和限制编辑器中可用的格式选项。


新的宏@Animatable简化了视图、视图修饰符、文本渲染器、形状以及其他结构体或类的动画功能。它通过类型中声明的可动画属性实现animatableData属性,自动合成以遵循Animatable协议。例如,你可以像下面这样使用它来实现widthangle属性的动画,同时排除不可动画的属性,如isOpaque


@Animatablestruct CoolShape: Shape {    var width: CGFloat    var angle: Angle    @AnimatableIgnored var isOpaque: Bool

// ...}
复制代码


另外,还有几项新增功能能够使使用 UIKit 和 SwiftUI 的开发者从中受益。值得注意的是,新的UIHostingSceneDelegate类使得将 SwiftUI 场景桥接到 UIKit 成为可能,就像UIHostingController允许管理 SwiftUI 视图一样。这将集成能力扩展到完整的场景中,而不仅仅是单个视图。


最后但同样重要的是,SwiftUI 完全支持新的 Liquid Glass 设计语言。Liquid Glass是一种动态材料,结合了玻璃的光学特性和流动性。它会从下方折射内容,从周围反射光线,并在其边缘产生透镜效果,为界面带来深度和动感。

 

要利用这一点,应用不需要重新设计,只需使用 Xcode 26 重新构建以利用新设计即可。然而,为了完全拥抱 Liquid Glass,苹果建议审查前景元素如何与动态背景形成对比,并选择使用新的系统材料以确保可访问性和视觉和谐。

 

另外,iOS 26 还包括了Swift Charts的增强版本,现在已支持3D图形。这次更新允许开发者在三维空间中绘制数据,可视化数学曲面,并创建更具沉浸感和信息量的视觉化效果。Swift Charts 现在能够让开发者可以配置相机,调整光线和材料,并微调渲染属性。

 

SwiftUI 26 包含的内容远不止我们这里所能涵盖的,所以请查看官方的WWDC会议以获取全部细节。


查看英文原文:SwiftUI for iOS 26 Embraces LiquidGlass, Introduces WebView and Rich Text Editing

2025-06-30 17:005339

评论

发布
暂无评论

linux入门系列8--shell编程入门

黑马腾云

Linux centos Shell linux命令 linux编程

如何让我的简历有价值、有亮点

escray

学习 面试 简历

终极学习法,你能学会任何东西--程序员的学习之路

盛安德软件

全票通过!易观开源项目DolphinScheduler进入Apache孵化器

易观大数据

企业信息化怎么构建?

代码制造者

大数据 低代码 企业信息化 零代码 编程开发

开源,轻松实现RTC与SIP互通

anyRTC开发者

WebRTC 编码 SIP 源码解析

火眼云CEO张陆鹏:A轮融资5000万,解密国内ABM生态首位玩家

ToB行业头条

linux入门系列6--软件管理之rpm和yum仓库

黑马腾云

Linux centos 运维 rpm yum

英特尔神经拟态芯片Loihi大显身手 帮助轮椅上的儿童实现独立生活

最新动态

网页游戏

小端taro

linux入门系列7--管道符、重定向、环境变量

黑马腾云

Linux centos 运维 linux命令 管道符

第11周总结

娄江国

区块链技术正向平台化、组件化、集成化演进

CECBC

大数据 区块链技术 科技

非IT行业大企程序员讲述MIS系统开发案例

Learun

敏捷开发 企业信息化 企业管理 .net core 「Java 25周年」

Devops与敏捷二者能否结合?

禅道项目管理

DevOps Scrum 敏捷开发

要老婆吗? AR一键生成的那种

程序员生活志

INT类型知多少

Simon

MySQL

第11周作业

娄江国

质量门禁:Verigreen开启Git的Commit门禁

陈磊@Criss

提高GIT中代码质量的七点优秀实践

程序员生活志

git 经验总结

一位男程序员的英语学习之路

盛安德软件

【Kafka】消费者客户端小结(java)

guoguo 👻

可能是首个支持部署 Deno 前后端应用的部署工具

binggg

taro GitHub 大前端 deno Node

python自动生成一整月的排班表

不会写诗的王维

Python

37岁程序员被裁,想用6月工资跪舔领导划掉被裁名额,结果蒙了!

程序员生活志

王者荣耀为什么不使用微服务架构?

程序员生活志

linux入门系列9--用户管理及文件权限控制

黑马腾云

Linux centos centos7 linux运维 linux用户权限

​JDK1.8新特性(八):还在重复写空指针检查代码?赶紧使用Optional吧!​

xcbeyond

Java 新特性 JDK1.8 Optional JDK1.8新特性

区块链技术助力甘肃建食安信息追溯平台 为食品安全“立规矩”

CECBC

食品追溯 食品安全

物联网SIM卡和SIM卡真的不是一回事

华为云开发者联盟

人工智能 物联网 华为云 传感器 SIM卡

CHAR与VARCHAR详解

Simon

MySQL

iOS 26的SwiftUI拥抱LiquidGlass,并引入WebView和富文本编辑_软件工程_Sergio De Simone_InfoQ精选文章