首页
学习
活动
专区
圈层
工具
发布

打造可适配多平台的 SwiftUI 应用

今天我要和大家交流的主题是 —— 打造可适配多平台的 SwiftUI 应用。电影猎手我们先看一个例子,然后再进入今天的正题。图片这是我为本次交流主题写的一个 Demo 应用 —— “电影猎手”。...SwiftUI 通过设定了某些兼容性的限制,促使开发者在做多平台适配时,不得不考虑平台特点的不同,并根据这些不同来做有针对性的调整。...但是,如果开发者不能理解 SwiftUI 的这个“限制”,并提前做一些准备工作,可能会为之后的多平台开发工作带来一些隐患和增加不必要的工作量。以“电影猎手”的 iPad 版本为例。...,除了 iOS 中出现的两种窗口状态外,我们还添加了 macOS 枚举项。...盲目地使用这些解决兼容性的代码可能会破坏 SwiftUI 创建者的苦心,让开发者无法准确地体现不同平台的特色。数据源聊完兼容性后,我们再聊另一个在构建多平台应用初期容易忽略的问题:数据源(数据依赖)。

4.6K80

打造可适配多平台的 SwiftUI 应用

今天我要和大家交流的主题是 —— 打造可适配多平台的 SwiftUI 应用。 电影猎手 我们先看一个例子,然后再进入今天的正题。...100% 基于 SwiftUI 开发,目前支持三个平台: iPhone、iPad 和 macOS。 使用者可以通过它来浏览电影信息,包括正在上映以及即将上映的影片。...SwiftUI 通过设定了某些兼容性的限制,促使开发者在做多平台适配时,不得不考虑平台特点的不同,并根据这些不同来做有针对性的调整。...但是,如果开发者不能理解 SwiftUI 的这个“限制”,并提前做一些准备工作,可能会为之后的多平台开发工作带来一些隐患和增加不必要的工作量。 以“电影猎手”的 iPad 版本为例。...} 在这个枚举类型中,除了 iOS 中出现的两种窗口状态外,我们还添加了 macOS 枚举项。

3.5K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    WWDC 2025 开发者特辑 | 肘子的 Swift 周报 #088

    How to Observe Model Changes in iOS 26[27]by Khoa[28] iOS 26 中,UIKit 视图获得了与 SwiftUI 相同的 Observable 自动响应能力...Virtualising macOS 26 Tahoe[34]by Howard Oakley[35] 在 Apple Silicon Mac 上安全运行 macOS 26 Beta(Tahoe)虚拟机的完整指南...macOS Tahoe Brings a New Disk Image Format[42]by Howard Oakley[43] macOS 26 Tahoe 引入了基于 APFS 稀疏文件的全新...ASIF 磁盘映像格式,可在虚拟机中实现近原生的读写速度,并向 Sequoia 15.5 及以后版本兼容。...18 和 macOS 15 中,只需在 Info.plist 中开一个开关,UIKit 和 AppKit 即可自动跟踪 @Observable 模型的属性访问并在视图更新时自动刷新;iOS 26 及以后版本还引入了更高效的

    56210

    Xcode 26 beta 4,要崩我们一起崩 | 肘子的 Swift 周报 #096

    经进一步研究发现,预览导致系统崩溃的问题更可能是由 iOS 26 模拟器引起的。即便使用稳定版 Xcode 16.4 搭配 macOS 26,只要将预览环境设置为 iOS 26,同样会导致系统崩溃。...这些设想的核心在于——让 SwiftUI 更加独立、灵活,能真正承载起复杂 UI 的构建需求。 什么是平台工程师?(What Is a Mobile Platform Engineer?)...SwiftUI for Mac 2025[9] 作为 macOS by Tutorials[10]一书的作者,troz[11]一直密切关注 SwiftUI 在 macOS 上的演进。...这篇面向 iOS/macOS 开发者的教程,重点并非汇编语法本身,而是帮助开发者建立从高级语言到底层硬件的认知路径。...更强的 SwiftUI 搜索 API (SwiftUI Search Enhancements in iOS and iPadOS 26)[19] 在 iOS/iPadOS 26 中,搜索栏的行为有了显著调整

    48100

    flutter实战项目之全平台(android,windows,ios,web,macos,linux)

    Flutter Web项目 Flutter 最近发布了 Flutter V2.5.1,其性能得到了很大提升,支持 Web、macOS、Android 和 iOS。...这就是为什么今天我们使用在 Web、macOS 应用、Android 和 iOS 应用上运行的 flutter 创建响应式博客主题。此外,我们创建了一个具有自定义悬停动画的动画网络菜单。...如果你的是旧项目添加 fvm 6.1使用迁移工具 6.2手动迁移 6.3.分析 6.4测试 Flutter 最近发布了 Flutter V2.5.1,其性能得到了很大提升,支持 Web、macOS、Android...和 iOS。...这就是为什么今天我们使用在 Web、macOS 应用、Android 和 iOS 应用上运行的 flutter 创建响应式博客主题。此外,我们创建了一个具有自定义悬停动画的动画网络菜单。

    1.1K10

    烟花与无人机|肘子的 Swift 周报 #069

    苹果设备的多平台开发 (Multiplatform Development for Apple Devices)[9] 尽管 SwiftUI 为适配多平台提供了诸多的便利,但由于苹果的“Learn once...通过这些步骤,作者展示了如何利用 SwiftUI 的跨平台能力,同时针对不同平台进行优化。...在 iOS 应用中选择最佳邮件发送方式 (Choosing the Best Way to Send Emails in an iOS App)[11] 在 iOS 上,开发者可以选用多种方式在应用中发送邮件...mailto 链接:适合需要预填收件人、主题和正文的场景,跨平台支持(iOS、macOS、visionOS)且支持用户默认的邮件应用,但不支持附件。...让你的应用提供 macOS 系统级服务 (Provide macOS System-wide Services from Your App)[16] 系统级服务允许 macOS 应用将其功能扩展到整个系统

    38700

    从开放平台到受控生态:谷歌宣布 Android 开发者验证政策 | 肘子的 Swift 周报 #101

    这一方面体现了谷歌意图将 Android 平台打造成类似 iOS 的"围墙花园"模式,另一方面也反映出谷歌急需深化 Android 平台的商业价值,以应对 Chrome 可能被拆分、AI 对搜索业务产生持续冲击等不利因素...或许,Android 与 iOS 之间最后的差异正在消失,这既是危机,但未尝不是转机。Android 的普及得益于其开放特性,在当下的情况下,或许又给了某个新平台、新生态提供了不错的发展时机。...这是一款顶级的 macOS 应用,只需点击几下,即可轻松捕获和调试 HTTP(s) 流量。支持 iOS设备和模拟器。...macOS 的 Accessibility[17] 与 iOS 相比,macOS 的多窗口机制为开发者在实现无障碍功能(Accessibility)时带来了额外挑战,尤其是对于第三方输入法。..."") 目前 0.1 版本需要 Swift 6.1+,暂不支持 iOS 等移动平台。作为 Swift Foundation 项目的一部分,它代表了 Swift 生态系统基础设施现代化的重要一步。

    25010

    聊聊科技界发生的大事 WWDC

    macOS 前身 Mac OS 的设计风格为拟物,到了 macOS 10.10 变为扁平和当前 iOS 7 平齐,但是迟了一年。而现在 macOS 11 首先推出新设计风格,将扁平和经典的拟物相结合。...不过以后的 mac 平台装不上 Windows 了那就是可喜可贺了。...应用于 Apple Silicon 的 Mac 优点: 大一统生态(指所有苹果设备使用同一个芯片,体验上会更好,iOS 和 macOS 也将会更加互通互联) 系统性能和稳定性更高(可以对比安卓和 iOS...) 破解软件会变少(我猜的,但是很有可能,对我们这些穷逼来说可能是缺点吧) macOS 上直接跑 iOS app 无需模拟器(虽然可能某些大作不愿移植,损失了一部分软件,但是可以换来 iOS 全平台所有...这次的 Swift 与往年每年大改不同,而是重点升级了 SwiftUI,化繁为简的 SwiftUI 在此次开发者大会中的地位举足轻重,而苹果也是大力提倡使用 SwiftUI 进行开发。

    80920

    Arc、Dia、TCA 与 SwiftUI | 肘子的 Swift 周报 #086

    从技术角度来看,Arc 的最低系统要求是 macOS Ventura。在这样一个大型项目中选择 SwiftUI 确实令人好奇。...毕竟 SwiftUI 直到最近两个版本才在 macOS 平台有较明显的进步,且这些进步主要集中在 API 的丰富程度上,而性能表现仍存在明显短板。...客观而言,SwiftUI 与 AppKit 在 macOS 上的性能差距,要比 SwiftUI 与 UIKit 在 iOS 上的差距更为明显。...本文中,John Sundell[15]深入讲解了 ViewBuilder的实际能力与最佳实践,尤其是在构建自定义组件(如 Container)时,如何通过它实现多视图声明、灵活控制布局,并打造符合 SwiftUI...它还支持透明背景、多屏适配、自定义样式和手动窗口委托,非常适合用于构建 HUD、悬浮工具栏、辅助调试面板等系统级功能。

    44510

    变暗的 Liquid Glass 和消失的 Apple Intelligence | 肘子的 Swift 周报 #093

    系列涵盖了理论基础、工具选择、GitHub Actions 实战、完整的 iOS CI/CD 流程,以及如何构建跨团队协作的打包平台。...如何在 macOS 上用 SwiftUI 展示独立窗口 (Presenting Secondary Windows on macOS with SwiftUI)[17] 在过去的两年中,SwiftUI...当我看到文章提到的大量以 window开头的视图修饰器,才明显地感受到,不知不觉间,SwiftUI 已经在 macOS 上成长了很多。...Shaft 结合了 Flutter 的自渲染方法和 Swift 的原生性能,注重简洁性和可定制性,目前已支持 macOS、Linux 和 Windows 平台。...上用 SwiftUI 展示独立窗口 (Presenting Secondary Windows on macOS with SwiftUI): https://l.fatbobman.com/w093

    29400

    苹果正在为系统级支持 MCP 做准备 | 肘子的 Swift 周报 #0104

    返老还童看 macOS (Benjamin Button Reviews macOS)[13] 近几年,苹果一直尝试统一 macOS 与 iOS 的设计语言,这个趋势在最新的版本中,通过 Liquid...iOS 应用测试实战清单 (How I QA iOS Apps)[15] Sam Henri Gold[16]分享了他多年来测试 iOS 应用的实战清单。...作者特别提醒:macOS 只显示第一张截图(iOS 显示前三张),因此顺序至关重要;分析数据时应关注日均值而非总量,并聚焦 App Store Browse 来源,才能更准确评估元数据优化的成效。...项目包含完整的 DocC 文档和跨平台示例应用,需要 iOS 17+/macOS 14+。.../profile/rakhim.org [15] iOS 应用测试实战清单 (How I QA iOS Apps): https://l.fatbobman.com/w0104-05 [16] Sam

    24610

    IOS Widget(1):概述

    引言   本系列文章作者是安卓开发,以安卓开发的视角学习IOS小组件,记录一下踩坑记录,如有讲得不对的地方,路过大佬多包涵。如果你是想深入学习小组件,建议您顺着笔者的编号顺序阅读本系列文章。...小组件概述 WidgetKit 通过在 iOS 主屏幕或 macOS 通知中心放置小组件,让用户可以随时访问 App 中的内容。Widget 可以保持更新,从而让用户获得最新信息。...要实现一个 Widget,需要给应用添加一个 Widget 扩展并只能使用SwiftUI来实现 Widget 的内容。...小组件开发备注 开发工具XCode:Version 12.4 (12D4e) IOS支持版本:iOS 14.0以上 macOS支持版本:macOS 11.0以上 开发小组件要求:小组件的UI开发必须使用...SwiftUI 小组件实现原理   要实现窗口小部件,您可以向应用程序添加窗口Widget Extensio。

    2.1K20

    JetBrains 发布了 Kotlin Multiplatform 的首个稳定版本

    Kotlin/Native 使用 MinGW(适用于 Windows 的 GCC 工具链)和 Android NDK 编译成适用于 macOS、iOS、Linux、Windows 的独立可执行文件。...Compose Multiplatform 在桌面平台、macOS、Linux 和 Windows 上也是稳定版本,但在 iOS 上是 Alpha 版本,在 Web 上是实验性的。...如果 Compose Multiplatform 还没有准备好,那么开发者如何支持 iOS 呢?...这可以通过使用 SwiftUI 来实现,SwiftUI 是苹果(Apple)的官方 UI 设计语言,它是基于声明式代码的。有一些代码示例正是采用了这种方式实现的。...去年,谷歌通过 引入 其他一些 Jetpack 库的“实验预览”,表达了对 Kotlin Multiplatform 的一些支持,这些库不是用于生产的,而是用于“在针对 Android 和 iOS 应用程序的多平台项目中使用这些

    78120

    SwiftUI-跨平台

    在教程的一开始,我们就说过 SwiftUI 是跨平台的,本文主要讲解当开发好基于 iOS 的 App 以后,如何快速实现 watchOS 和 macOS 的跨平台 App。...创建macOS App 给当前项目添加 macOS 的 Target,选择 Xcode 菜单:File > New > Target > macOS > App。...复制 iOS 项目中的文件到该项目中,macOS 的项目目录与 iOS 的几乎一样。 编译程序,由于并不是所有的 View 都是通用的,所以一般会报错,根据错误修改。...案例 以前面提过的天气预报列表为例来看看 SwiftUI 如何实现跨平台 App 开发。...macOS 如果直接运行 iOS 的代码,虽然不报错但浪费了很多空间,因为默认窗口的大小为width: 480, height: 300,所以需要调整一下。

    2.2K20

    干货 | 关于SwiftUI,看这一篇就够了

    作者简介 梁启健,携程金融支付中心开发工程师,主要负责支付iOS端的开发与优化工作,喜欢研究大前端和跨平台技术。...一、背景 苹果于2019年度WWDC全球开发者大会上,发布了基于Swift建立的声明式框架--SwiftUI,其可以用于watchOS、tvOS、macOS等苹果旗下产品的应用开发,统一了苹果平台的UI...Apple选择了直接在macOS上进行渲染,不过需要搭载有SwiftUI.framework的macOS 10.15才能够看到Xcode Previews界面。...SwiftUI; 虽然SwiftUI优点很多,但是其使用的门槛很高,只能在iOS 13以上的系统使用;仅这点,很多公司和开发者望而却步,目前主流应用最低支持iOS 9,至少3年之内,SwiftUI只能作为一个理论的知识储备...,所以其还有很长的路要走; SwiftUI这种与平台无关、纯描述的UI框架,恰恰是跨平台方案的正确方向,将来其能否统一整个大前端呢?

    14.7K11

    MCP 崛起与苹果的 AI 框架设想 | 肘子的 Swift 周报 #077

    TabView 全面解析 [12] TabView的能力在 SwiftUI 中持续演进:从最早的标签页(Tab)切换,到引入滑动分页(Pager)行为,再到 iOS 18 支持侧边栏(Sidebar)样式与分组配置...,逐步成长为多平台通用的导航组件。...该工具可用于快速安装、切换、更新 Swift 工具链,支持 macOS 和主流 Linux 发行版,并可通过 .swift-version文件统一团队使用的 Swift 版本。...基于 RxSwift 编写的 iOS wanandroid 客户端[22] WanAndroid 是一个知名的中文安卓学习社区,本项目由 seasonZhu[23]基于其开放 API 编写的 iOS 客户端...通过围绕相同业务需求进行跨平台、多框架的实现,作者不仅加深了对各平台差异的理解,也形成了自己的一套组件化与响应式开发思路。对希望探索跨平台开发策略的读者来说,这是一个颇具参考价值的项目。

    67910

    Skip Fuse 现在对独立开发者免费! -- 肘子的 Swift 周报 #0110

    这种做法既保留了 SwiftUI 的声明式语法,又遵循了 Android 平台的设计规范。 此次政策调整,或许会让许多独立开发者和中小团队在技术选型上更倾向于具备跨平台潜力的方案。...即便继续主要面向 Apple 生态进行开发(使用苹果私有框架),也可能开始在架构中加入抽象层,为未来的多平台拓展预留空间。...社区也正期待着类似 Skip 这样成熟的跨平台方案能够扩展至 Linux、Windows 乃至嵌入式平台,为 Swift 的多平台发展奠定更坚实的基础。...它通过直接读取 iMessage 数据库(chat.db)并结合 AppleScript 实现自动化,因此仅限 macOS 使用,且需要授予应用"完全磁盘访问权限"。...、sequenced、exclusive)带来的约束,实现更自然的多手势交互。

    17310
    领券