JetBrains已发布Compose Multiplatform 1.10.0,这是基于Kotlin的声明式框架的最新版本,用于在多个平台上构建共享UI。该更新于1月13日发布,支持在桌面和iOS部署中对原生互操作元素进行自动调整大小。
元素自动调整大小功能
这些元素的大小调整意味着它们现在可以根据内容自适应布局,无需手动计算精确尺寸或提前指定固定尺寸。在桌面平台上,SwingPanel会根据嵌入组件的最小、首选和最大尺寸调整其大小。对于iOS,UIKit互操作视图现在支持根据视图的适配大小(内在内容大小)进行尺寸调整。这使得能够正确包装SwiftUI视图(通过UIHostingController)和不依赖NSLayoutConstraints的基本UIView子类。
有关Compose Multiplatform入门指南可在kotlang.org找到。Compose Multiplatform是构建在Kotlin Multiplatform技术之上的可选UI框架,用于为不同平台构建应用程序并重用代码。Compose Multiplatform应用程序可在iOS、Android、macOS、Windows、Linux和Web上运行。
Web缓存优化
在1.10.0版本中,Compose Multiplatform现在使用Web Cache API来缓存静态资源和字符串资源的成功响应。这避免了与浏览器默认缓存相关的延迟,浏览器默认缓存会通过重复的HTTP请求验证存储的内容,在低带宽连接下可能会很慢。缓存会在每次应用启动或页面刷新时清除,以确保资源与应用程序的当前状态保持一致。此功能为实验性特性。
其他功能改进
Compose Multiplatform 1.10.0的其他改进包括:
Compose热重载插件现在与Compose Multiplatform Gradle插件捆绑在一起。用户无需再单独配置热重载插件,因为对于面向桌面的Compose Multiplatform项目,它默认启用。
跨平台预览方法已统一。开发者现在可以在commonMain源集中使用androidx.compose.ui.tooling.preview.Preview注解。其他注解,如org.jetbrains.compose.ui.tooling.preview.Preview和桌面特定的androidx.compose.desktop.ui.tooling.preview.Preview已被弃用。
Navigation 3是用于管理导航的新库,现在支持非Android目标平台。
DialogProperties中的以下属性已升级为稳定版本,不再是实验性的:usePlatformInsets、useSoftwareKeyboardInset和scrimColor。同样,PopupProperties中的usePlatformDefaultWidth和usePlatformInsets属性也已升级为稳定版本。
不带PopupProperties参数的Popup重载的弃用级别已更改为ERROR,以强制使用更新的API。
对于iOS,Compose Multiplatform现在支持WindowInsetsRulers,它提供了根据窗口插入区域(如状态栏、导航栏或屏幕键盘)定位和调整UI元素大小的功能。
Q&A
Q1:Compose Multiplatform 1.10.0最重要的新功能是什么?
A:最重要的新功能是支持互操作视图的自动调整大小。这意味着原生互操作元素现在可以根据内容自适应布局,无需手动计算精确尺寸或提前指定固定尺寸,大大简化了开发工作。
Q2:Compose Multiplatform支持哪些平台?
A:Compose Multiplatform应用程序可在iOS、Android、macOS、Windows、Linux和Web上运行,是一个真正的跨平台UI框架。
Q3:新版本中的Web缓存优化有什么作用?
A:Web缓存优化使用Web Cache API来缓存静态资源和字符串资源,避免了浏览器默认缓存的延迟问题,特别是在低带宽连接下能显著提升性能。缓存会在每次应用启动或页面刷新时清除以确保一致性。