SwiftUI 是目前 Apple 大力推荐的 UI 框架,也是未来 Apple 生态软件开发的趋势,上手成本非常低,可以在很短的时间内写出适配多端的界面,并且带有实时预览,纯代码,声明式等优点。
如果想要从零开始入门 iOS 开发的话,swiftUI 是目前推荐的选择。但是需要注意的是,因为 swiftUI 还在每年不断的进化中,有些 API 也在不断修改调整,需要时刻关注每年的 WWDC 最新的特性。但是如果是用来正式开发中大型商业项目的话,swiftUI 并不适合,一方面是稳定性没法满足,偶尔会遇到些莫名其妙的小 bug,调试起来也很困难,例如一些UIKit中早已完善的特性,在对应的 swiftUI 的控件中并不支持,需要花更多的时间定制,或者通过 UIKit 控件来实现。另一个原因是每年的新特性也只支持最新的 iOS 系统,而一般我们都会往前兼容 2-3 代系统版本,也就意味着今年新出的特性和控件需要 2-3 年之后才能全面使用,这点需要注意。尽管如此,swiftUI 依然有着不可忽视的前景,社区活跃度也很高。
 
下面由浅入深整理一些资料,用于 swiftUI 学习和参考:

入门

社区学习资料

进阶

社区和资讯

肘子的Swift记事本
在 WWDC 2019 上,苹果推出了 Core Data with CloudKit API ,极大地降低了 Core Data 数据的云同步门槛。由于该服务对于开发者来说几乎是免费的,因此在之后的几年中,越来越多的开发者在应用中集成了该服务,并为用户带来了良好的跨设备、跨平台的使用体验。本文将对实时切换 Core Data 云同步状态的实现原理、操作细节以及注意事项进行探讨和说明。 在上篇中,我们对 SwiftUI 布局过程中涉及的众多尺寸概念进行了说明。本篇中,我们将通过对视图修饰器 frame 和 offset 的仿制进一步加深对 SwiftUI 布局机制的理解,并通过一些示例展示在布局时需要注意的问题。 在 SwiftUI 中,尺寸这一布局中极为重要的概念,似乎变得有些神秘。无论是设置尺寸还是获取尺寸都不是那么地符合直觉。本文将从布局的角度入手,为你揭开盖在 SwiftUI 尺寸概念上面纱,了解并掌握 SwiftUI 中众多尺寸的含义与用法;并通过创建符合 Layout 协议的 frame 和 fixedSize 视图修饰器的复制品,让你对 SwiftUI 的布局机制有更加深入地理解。 "对齐"是 SwiftUI 中极为重要的概念,然而相当多的开发者并不能很好地驾驭这个布局利器。在 WWDC 2022 中,苹果为 SwiftUI 增添了 Layout 协议,让我们有了更多的机会了解和验证 SwiftUI 的布局原理。本文将结合 Layout 协议的内容对 SwiftUI 的 "对齐" 进行梳理,希望能让读者对"对齐"有更加清晰地认识和掌握。 Table 是 SwiftUI 3.0 中为 macOS 平台提供的表格控件,开发者通过它可以快捷地创建可交互的多列表格。在 WWDC 2022 中,Table 被拓展到 iPadOS 平台,让其拥有了更大的施展空间。本文将介绍 Table 的用法、分析 Table 的特点以及如何在其他的平台上实现类似的功能。 长久以来,开发者对 SwiftUI 的导航系统颇有微词。受 NavigationView 的能力限制,开发者需要动用各种技巧乃至黑科技才能实现一些本应具备基本功能(例如:返回根视图、向堆栈添加任意视图、返回任意层级视图 、Deep Link 跳转等 )。SwiftUI 4.0( iOS 16+ 、macOS 13+ )对导航系统作出了重大改变,提供了以视图堆栈为管理对象的新 API ,让开发者可以轻松实现编程式导航。本文将对新的导航系统作以介绍。
肘子的Swift记事本
Releases · SwiftOldDriver/iOS-Weekly
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。 上周一共更新了 12 篇文章,目前总共已经更新了 86 篇,每篇质量都非常高,由于篇幅问题,开头先推荐 3 篇可能大家更感兴趣的,其他的放到周报最后了~ 本文主要介绍 Swift 5.7 中关于泛型新增的语言特性。通过一个示例程序与你探讨泛型的使用场景与协议的接口设计,帮助你理解 some 与 any 修饰符在泛型中的使用。 UIKit 作为 iOS 开发过程中非常核心的一个 framework,每年的更新换代都会对其做出一些升级和调整。只不过以往更多是针对单独的改动出独立的 session,没有专门出一个 session 成去体系地介绍 UIKit 里的改动。自从 WWDC 2021 开始,第一次系统地介绍了 What's new in UIKit ,主要围绕的方面包括针对生产效率提升的改动,UI 改动及 API 的改动等等。今年沿用了去年的思路,继续围绕这几个方面展开介绍。这个 session 虽然没有办法展开介绍所有的 UIKit 改动的技术细节,但它会把 UIKit 新特性里最重要的部分归纳到一起,起到提纲挈领的作用,让大家对 UIKit 的变动有一个整体的了解。文中会附有一些 session
Releases · SwiftOldDriver/iOS-Weekly
home page | Zhangferry
@远恒之义... 先说下背景需求,在摸鱼周报的整理流程中,最后一步需要生成公众号的原文链接,原文链接指向的是个人博客地址。博客需要发布才能产生外部链接,发布到不费事,但是操作步骤重复,且因为涉及博客推送相关的配置都在我的个人电脑里,所有步骤必须由我来完成。来回多次之后就考虑将这个流程做成自动化了,目标是让周报协作者都可以实现博客推送,用到的实现方式是 Github Action。 在开始之前先了解下原先的发布流程,如下图表示: 整个过程涉及 3 个仓库: Moyu Repo。管理周报文章的公共仓库,协作者可以通过它拉取和推送内容。 Blog Repo。管理博客内容的私有仓库,周报只是其中一部分。 @远恒之义 :本次活动将探索全新的 Create ML Components 框架,来配置更细颗粒度的机器学习任务。了解如何通过 Create ML Components 在图片类、列表类、视频类等任务上创建自定义模型,更好地配合您的使用场景。 活动将于 20... 本期话题:2022 Apple 高校优惠活动开启 本周学习:Swift 5.7 中的 opaque parameter 和 primary associated types 内容推荐: WWDC22 内参推荐 摸一下鱼:推荐收集到的各种图标网站 岗位推荐:上海 Espressif 招聘全栈工程师 @远恒之义 :炎热的暑假来袭,Apple 为你"降降温"。一年一度的 Apple 高...
home page | Zhangferry
 

上面整理的这些资料是我认为较好的入门 swiftUI 的资料,在选择平台学习的时候,不要纠结不要贪多,优先官方的资料,其次可以选择斯坦福的教程,选定了之后开始跟着练习,只看不做是没有用的,一定要动手敲代码。

SwiftUI 学习路线

 
  1. 从项目出发,找到自己的需求定一个目标,做一个 todo app,或者计算器,或是其他的小应用,不要太难太复杂,最好结构简单,包括界面交互和数据处理。
  1. 有了自己想做的目标,就可以开始了解基础概念,学习基本组件和视图,主要借助官方文档以及一门示例课程来掌握基础知识,不需要全部了解,大概知道一个视图需要用哪些组件来实现,如何布局,数据和界面如何绑定和传输。这期间时间不要拉太长,尽量在几天内熟悉。
  1. 开始动手开发自己的小项目,从第一个页面开始,从最基础的布局开始,可以将 https://swiftontap.com/ 或者其他一些示例网站做为手册,在需要的时候查询,同时可以在官网下载几个示例项目做为参考。
  1. 变做边学,遇到不懂的去看文档,遇到难题通过一些专题视频或者博客以及 stackoverflow,github,apple develop 社区来寻找解决方案。
  1. 坚持下去,克服畏难的心理,加入一些开发群,一般在 Discord 上讨论的较多。
  1. 学习 swiftUI 编程思想,深入理解 swiftUI 的理念和运行方式。
 
以上是我认为较好的快速入门 swiftUI 的路线,不过这是针对有一定开发基础的,如果没有相关开发经验的话,还需要学习 swift 语言,Xcode的使用,app 调试等知识,不过这些都有很多教程,通过官网也能找到学习资料,并不困难。
总体而言,我认为在学习资料如此丰富的今天,入门一项技能并不难,难的是面对困难的勇气和耐得住性子的坚持,这才是最重要的。正如我们在人生路上一样,好不容易打开了一扇门,结果会发现门口还会有很长的一段路要走。如果选择了这条道路,学会了基础的开发还不够,还需要掌握底层的运行规律,编译原理,内存管理,性能优化这些知识,只有不断的沉下心来学习积累,才可能走的更远。
 
badge