第一个 iOS 项目开发小结 - SwiftUI 学习资料、开源项目
第一个 iOS 项目开发小结
- SwiftUI 知识点小记
- 学习资料
- 开源项目
- 一些问题记录
- 项目预览
这段时间由于项目需要,我学习了一段时间 SwiftUI 并单独完成了一个系统的开发,耗时两个星期,主要是经常会发现自己一开始的写法不好,然后对项目进行重构…尤其是网络请求、数据加载的生命周期、状态管理等方面。。
由于我不是专门做 iOS 的,我目前只会使用 SwiftUI,UIkit 基本没用到(有时候网上搜到别人的代码有用到会加进来),在要求不高的情况下,SwiftUI 还是够用的,后续有机会可以继续学习(还有一个 iOS 项目在等我呢。。。)
现在这个项目虽然完成了(可能还有一些修修改改),但是我觉得代码上还有很多不够优雅或者非标准的解决方案,最近忙期末考试,这段时间抽空学习一些开源项目,学习一些更好的写法。。
项目预览放在博客最后(只能放出一部分界面)
技术点简单小结:
- UI 框架:SwiftUI
- 包管理:CocoaPods
- 网络请求:Alamofire
- 轻量级持久化(存储 token、id…):UserDefaults
SwiftUI 知识点小记
以下都是我的理解进行一些简单的回想,如果描述有误可以指出
页面布局:
- VStack:纵向盒子
- HStack:横向盒子
- ZStack:垂直屏幕方向盒子
- Group:分组
- Spacer:控制盒子内布局
- GeometryReader:获取父 View 的尺寸
获取屏幕尺寸通过UIScreen.main.bounds.width
常用组件:
- Text:文本显示
- Button:按钮
- Picker:选择器,包含多种样式
- DatePicker:日期选择器
- Image:图片
- ProgressView:加载效果
表单相关
- List:将内容变为 iOS 表单格式
- Form:与 List 效果一样
- TextField:文本输入框
- SecureField:密码输入框
- Section:设置表单中的一些头部、尾部信息
页面跳转
- NavigationLink:页面跳转,可以设置导航标题、导航头等
- .sheet:相当于一个弹窗
- .fullScreenCover:相当于全屏的 sheet
状态管理:
- @State:管理当前 VIew 状态(一般是变量或者 struct)
- @StateObject:View 之间传递的对象
- @EnvironmentObject:整个项目所有 View 之间传递的对象
- @Binding:View 之间进行变量传递(地址传递)
- @Environment:从当前环境中取值,一般是实现编程导航或关闭 sheet
学习资料
遇到一些感觉不错的博客,分享出来:
专栏:知乎 - 肘子的Swift记事本
专栏:博客 - OneV’s Den
专栏:博客 - コニクマル
专栏:知乎 - SwiftUI成神之路
Landmarks:https://swiftui.jokerhub.cn
代码示例:Gitee - swiftui-example
代码示例:Gitee - SwiftUI
开源项目
在学习的过程,我找到了一些不错的开源项目,特此分享:
以下项目全部来自 Github 或者 Gitee
戴铭的 Swift 小册子:SwiftPamphletApp
SwiftUI 新特性: FeaturesDemo
Designers-Code 代码:SwiftUI-For-Designers-Code
模仿 Gitee 开发的 iOS 端:open-source-ios-apps
学习网络请求的项目:CatAPISwiftUI
语音识别功能的项目:SayMyName
简单的入门项目:cowboy-wisdom-swiftui
模仿微信开发的 iOS 端:SwiftUI-WeChat
SpringCloud + 前端 + iOS 的博客项目:NeptuneBlog-iOS
SwiftUI 中图表:ChartView
一些问题记录
解决 Text 文本显示不全的问题:
.fixedSize(horizontal: false, vertical: true)
地图相关:
- SwiftUI 获取当前位置:Using CoreLocation With SwiftUI
- SwiftUI 中跳转苹果自带地图:Github - OpenMapInSwiftUI
下拉刷新:
- 下拉刷新、上拉加载:SwiftUI-Refresh
- iOS 15 新特性:.refrehable
获取今日 23:59:59:
func getTodayEndTime() -> Date {let date = Date() // current date or replace with a specific datelet calendar = Calendar.currentlet endTime = calendar.date(bySettingHour: 23, minute: 59, second: 59, of: date)return endTime!
}
项目预览
这个项目不是个人项目,不能开源,界面也不能全部放出来,只能放出一些简单的功能性代表(且不涉及企业信息)的界面,下面是部分界面…
第一个 iOS 项目开发小结 - SwiftUI 学习资料、开源项目相关推荐
- ionic+angularJS+iOS混合开发app的学习资料介绍和基本步骤(干货)
ionic+angularJS+iOS 先安装nodejs.npm.angularJS和ionic 其中nodeJS和npm安装可以到官网下载nodeJS,然后双击安装就好很简单(网址: http:/ ...
- 成为一个大数据开发工程师的学习步骤--文字版
本博客搬运自我知乎所出视频成为一个大数据开发工程师的学习步骤? - 知乎大数据的学习是有条件限制的,首先你需要是一名普通的工程师,如果你是Java工程师的话更好,但如果你是小-https://www. ...
- python人工智能项目开发实例-人工智能学习路线图,整理近200个实战案例与项目...
Created by 唐宇迪 人工智能实战就业(面试)学习路线图 这个项目是干什么的? 整理这个项目的初衷是方便同学们快速开启人工智能自学计划,在学习过程中少走弯路用最快的效率入门Ai并开始实战项目, ...
- 如何学习Python开源项目代码
2019独角兽企业重金招聘Python工程师标准>>> 阅读Python开源项目代码主要有如下三个原因: 1. 在工作过程中遇到一些问题,Google和StackOverFlow等网 ...
- 学习Coding-iOS开源项目日志(二)
继续前篇:<学习Coding-iOS开源项目日志(一)>,接着本第二篇<学习Coding-iOS开源项目日志(二)>讲解Coding-iOS开源项目. 前言:作为初级程序员,想 ...
- Spring Boot学习案例开源项目
为了更好的学习并使用springboot进行开发,维护了一个springboot学习案例开源项目,涉及springboot从基础开发到企业实战,涵盖不同场景的开发案例.公司内部所有的服务都基于spri ...
- 【安卓学习之开源项目】 ParrotTongue:文字转语音(含LeLeTextToVoice、TextToMp3项目)
█ [安卓学习之开源项目] ParrotTongue:文字转语音(含LeLeTextToVoice.TextToMp3项目) █ 系列文章目录 提示:这里是收集了和音频有关的文章 [安卓学习之MP3] ...
- .NET项目开发的几个非常重要的项目设置
在开发.NET项目的时候,包括Winform项目和Web方面的项目,编译和部署的时候,都需要考虑到是32位的X86方式,还是64位的方式,有时候还需要进行调试,如果没有合理设置好这些关系,还可能出现无 ...
- AI:一个20年程序猿的学习资料大全—结构分析软件/办公软件/电气制造控制/高级语言编程/平面三维设计/视频编辑/FQ格式转换软件——只有你不想要的,没有你找不到的
AI:一个20年程序猿的学习资料大全-结构分析软件/办公软件/电气制造控制/高级语言编程/平面三维设计/视频编辑/FQ格式转换软件--只有你不想要的,没有你找不到的 目录 (有偿提供,替朋友转载,扫描 ...
最新文章
- 解决ubuntu ufw开启时,kvm虚拟机网络全部无法访问
- 物联网产业链及市场分
- silverlight 如何在浏览器的新页面里打开一个xaml
- 【bzoj3514】 Codechef MARCH14 GERALD07加强版
- Thinkphp5 还有这种操作?
- 数据结构顺序表的查找_数据结构1|顺序表+链表
- 12个免费在线的Web网站性能测试工具
- 灵活的javaScript
- jq方法中 $(window).load() 与 $(document).ready() 的区别
- 罗技驱动LOGI G Hub永久保存设置(板载模式)
- Gitee Pages Pro 初体验 FreeSSL申请过程小记
- android屏幕操作提示音,快捷指令库提示音
- javaGUI游戏教程--人物控制
- MEMOS 服务及隐私协议
- android hdmi拔插广播,拒绝频繁拔插:绿联 HDMI切换器 晒单
- 【C++】黑马程序员C++核心编程学习笔记(完结)
- samba之修改密码
- 龙人直线电话计费系统
- Jin Ge Jin Qu hao - UVa 12563 dp背包
- 千亿龙头开启价格血拼,四个重要消息将影响这几个板块的走势
热门文章
- IPv4头部结构具体解释
- 服务器显卡直通和GPU问题分析
- 计算机科学领域外文期刊影响因子排行,2020最新SCI影响因子出炉,中国期刊Top100榜单公布,附最全EXCEL完整版目录!...
- [日常]mov文件转换为gif
- qt 批量裁剪图片_照片变素描,不用下载App,好用的在线图片处理及图库
- Windows截图快捷键及自动保存路径
- crontab 每天凌晨12点定时器_crontab命令定时备份执行脚本
- CSS--盒子模型(box)--使用/教程/实例
- ckplayer网页视频在线播放
- 公司新加了一台友宝自动售货机引发的思考-适配者模式