这个项目助你快速又轻松掌握 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/...

相关推荐
初级代码游戏4 小时前
iOS开发 Swift 速记1:变量和基本数据类型
开发语言·ios·swift
for_ever_love__5 小时前
iOS:网络请求再学习
网络·学习·ios·objective-c
大龄秃头程序员9 小时前
Swift 值类型真的每次都会拷贝吗?OC 老兵聊聊 COW
swift
2501_9159214310 小时前
SwiftUI开发框架入门指南:从基础到实战
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
2501_9160074713 小时前
Python实现HTTPS爬虫的完整指南:使用requests、BeautifulSoup、Selenium和Scrapy
爬虫·python·ios·小程序·https·uni-app·iphone
LDyun_13 小时前
云手机低延迟怎么实现的?为什么云手机能够 7×24 小时在线?
ios·智能手机·安卓·玩游戏
for_ever_love__13 小时前
iOS: 网络请求第三方库的使用: AFNetworking
网络·学习·ios·objective-c·cocoa·xcode
李白你好13 小时前
强大的 Frida 重打包工具,用于 iOS 和 Android。轻松修改 Frida 特征
android·ios
东坡肘子14 小时前
热茶还是冰咖啡 -- 肘子的 Swift 周报 #147
人工智能·swiftui·swift
大龄秃头程序员1 天前
Swift方法派发
swift