这个项目助你快速又轻松掌握 SwiftUI 开发

一年以前当我准备学习开发 iOS 应用的时候选择了 SwiftUI. SwiftUI 是 Apple 新推出的一套开发规范。基于 MVVM 的理念,相比于 UIKit,UI 之间的交互完全基于数据驱动。选择 SwiftUI 而不是其他跨平台的开发框架,比如 Flutter 和 React Native 等,主要是为了追求用户体验。一转眼之间,我已经上架了两个应用到 App Store 了。

分别是一个用来积累单词的应用 「英语汪」 和一个密码管理软件 「Any Secret」。当然我也只是花了部分时间在 iOS 应用开发上。其中,第二个软件「英语汪」只用了一周的时间就开发完成。这首先得益于 SwiftUI 高效的开发效率,其次得利于我的开源项目 AwesomeSwift.

介绍

是什么?

AwesomeSwift 是一个开源的 SwiftUI 样板工程。该项目是我在阅读了多个开源项目源码之后沉淀而成,用来演示 SwiftUI 的控件和各种功能组件的使用,同时包含了实际开发过程中可能使用到的各种必备的组件,比如 Lottie、RSwift、崩溃统计等等,适合想要学习 Swift 开发的的新手同学。

为什么做这个工程?

我学过很多开发语言或框架,除了手机客户端还包括 Web 和 C# 桌面客户端。在学习的过程中我渐渐发现,在整个大前端领域,对技术掌握程度取决于对 API 和常用组件的掌握程度。我也想过写一些 SwiftUI 的教程,但看教程学习控件的使用比直接看源码效率低太多。于是,我把常用的组件整合到了一起,搭建了这个工程。用来帮助初学者快速掌握 SwiftUI.

项目的结构

我们可以很容易得从大前端领域内的不同平台开发的技术栈之间找到共性。通过类比,我们可以借助一个平台的开发经验快速掌握另一个平台的开发。

首先是构建工具,比如前端的 npm, vite, webpack 等;Android 的 Gradle 等。构建工具负责处理依赖、打包等流程,是一个项目基建的基础。在对比了 SPM、CocoaPods 和 Carthage 之后,我选择 CocoaPods. 不仅是因为 SPM 源码依赖和对 OC 的问题,也是因为很多大厂 iOS 开发就是使用 CocoaPods. 这有助于开发者的进一步发展。

确定了构建工具之后就是常用的组件。SwiftUI 本身提供了一些组件,但这显然是不够用的。比如,SwiftUI 中虽然提供了图片展示控件,但是没有针对网络图片的展示控件。所以,为了能够系统、全面地掌握 SwiftUI,我根据其他平台的开发经验对软件的开发进行拆解,分析需要哪些组件,然后去找到这些组件并将它们以示例的形式添加到了 AwesomeSwift 中。目前包含的组件(部分)如下所示,

你也可以通过阅读项目的 README 来了解更多:README.

这基本能够满足我们日常的开发需求!

最后

如果你是一个有志于开发自己的 iOS 应用的 SwiftUI 初学者,那么你可以试试这个项目。如果你觉得这个项目对你有帮助,别忘记给我们一个 🌟,让该项目帮助到更多的初学者~

地址:github.com/Shouheng88/...

相关推荐
2501_915106321 小时前
app 上架过程,安装包准备、证书与描述文件管理、安装测试、上传
android·ios·小程序·https·uni-app·iphone·webview
2501_915106321 小时前
使用 Sniffmaster TCP 抓包和 Wireshark 网络分析
网络协议·tcp/ip·ios·小程序·uni-app·wireshark·iphone
熊猫钓鱼>_>2 小时前
移动端开发技术选型报告:三足鼎立时代的开发者指南(2026年2月)
android·人工智能·ios·app·鸿蒙·cpu·移动端
徐同保21 小时前
通过ip访问nginx的服务时,被第一个server重定向了,通过设置default_server解决这个问题
ios·iphone
2501_915918411 天前
在 iOS 环境下查看 App 详细信息与文件目录
android·ios·小程序·https·uni-app·iphone·webview
2501_916007471 天前
没有 Mac 用户如何上架 App Store,IPA生成、证书与描述文件管理、跨平台上传
android·macos·ios·小程序·uni-app·iphone·webview
夏幻灵2 天前
HTTPS全面解析:原理、加密机制与证书体
ios·iphone
TheNextByte12 天前
如何在iPhone上恢复已删除的笔记的综合指南
笔记·ios·iphone
rose and war2 天前
python和jinja版本问题导致的访问报500
python·ios
fendoudexiaoniao_ios2 天前
iOS 列表拖拽cell排序
ios·swift