爱意满满的作品展示区。
graetdk
23.27D

春节自学了 SwiftUI 7 天,今天终于上架了第一款 iOS APP,分享一下过程

  graetdk · Feb 16, 2022 · 20863 views
This topic created in 1727 days ago, the information mentioned may be changed or developed.
开发这个 APP 的起因是去年有一段时间我时不时会得口腔溃疡,我想记录一下,我口腔溃疡的发作频率和每次持续的时间,一开始是用备忘录,但记录起来很麻烦,所以我有了想做这样一个记录 APP 的想法

坦白说我 17 年就准备学一下 iOS 开发,但是拖延了,19 年再次想学,甚至都买了苹果开发者资格,但。。还是拖延了,今年是第三次,这次我选了春节,这样时间比较充裕,每天差不多 3-4 个小时,通过苹果官方的教程和斯坦福 cs193p 公开课(白胡子大爷讲的那个),基本了解了 swiftUI 和 MVVM 的思维,总的来说,对我来说是很大的挑战,因为我之前的经验偏后端,很多东西完全是新的

春节结束之后我每天继续花 2-3 个小时写这个 APP ,因为太菜,踩了很多坑,真正写 UI 和逻辑的时间其实不多,大量的时间花在踩坑和找解决方案上面了,但这个过程也很有乐趣,以至于我缩减了很多在大表哥 OL 里玩德州扑克的时间

最终的 APP 是这样:





你可以设置一些追踪项,例如口腔溃疡,喝咖啡,流鼻血,有心动的感觉等等等等,然后在其发生的时候很快记录一下,此后就可以通过一个 GitHub commit log 风格的图表看到其发生频率和趋势,也能看到你的历史记录

整个 APP 不向除了苹果官方之外的任何服务器发送数据,我没有后端服务器,也没有使用任何第三方统计,广告代码什么的,记录数据也只保留在你的本地和 iCloud 文稿,并且支持导出导入,总之安全隐私应该没得说。


作为我的第一个 iOS 作品,不得不承认,还有很多因为我技术不足而未完成的细节,但我之后会继续慢慢打磨,争取做成一个精致的小工具


APP 名字叫 Becord ,直接在 App Store 搜可能搜不到,可以搜 Becord 元记录,也可以直接通过链接获取: https://apps.apple.com/cn/app/becord/id1608773156


另外附上我学习的资源:
Apple 官方开发者教程: https://developer.apple.com/tutorials/app-dev-training/getting-started-with-scrumdinger
斯坦福公开课: https://cs193p.sites.stanford.edu/
122 replies  •  2022-04-13 15:25:04 +08:00
1  2  
❮ ❯
Leonard
Leonard
Feb 16, 2022
1
新学的就做了 app 上架,挺牛逼的,不管怎样支持一下
crayygy
crayygy
Feb 16, 2022
2
厉害啊,自学七天就能出成果,非常有执行力了
levon
levon
Feb 16, 2022
3
强
orzz
orzz
Feb 16, 2022
4
厉害了,看来是有基础啊 老铁
14v45mJPBYJW8dT7
14v45mJPBYJW8dT7
Feb 16, 2022
5
界面设计很好看,前端开发吗
graetdk
graetdk
OP
Feb 16, 2022
6
@orzz 之前主要有写后端的经验,但我代码水准其实比较菜,swiftUI 整体重塑了我很多基础的概念,我觉得这个还挺重要的
graetdk
graetdk
OP
Feb 16, 2022❤️1
7
@rimutuyuan 说来你可能不信,完全是苹果原生的组件,这也是编译出来只有 2M 大小的原因
Pogbag
Pogbag
Feb 16, 2022
8
下载支持了 UI 不错
qq316107934
qq316107934
Feb 16, 2022
9
楼主可以分享下使用的 SwiftUI 的学习教程吗? 我使用官方教程学习发现学不到大部分控件和排版的用法,只能跟着官方代码一步一步走。
Leonard
Leonard
Feb 16, 2022❤️1
10
@qq316107934 #9 楼主最后发的那个斯坦福公开课 CS193P 就挺好的,比官方教程好
graetdk
graetdk
OP
Feb 16, 2022❤️1
11
@qq316107934 一步步走就能学到很多了,我不知道你看的官方教程是哪个,我知道是有两个,一个相册的,一个是我贴的 Scrum 的,后者能学到更多,按教程最终做出来的是完全够上架标准的一个 APP 了
Varsion13
Varsion13
Feb 16, 2022
12
棒诶
uCharles
uCharles
Feb 16, 2022
13
口腔溃疡就买意可贴 ,第二天就好了
graetdk
graetdk
OP
Feb 16, 2022
14
@Leonard CS193P 没得说,但是对我这种没经验的人来说,有点点吃力,先刷一下官方的再看就会好不少,个人感觉
graetdk
graetdk
OP
Feb 16, 2022
15
@sugz 那个靠激素,据说用多了会不管用,我只有比较严重的时候会用
qq316107934
qq316107934
Feb 16, 2022
16
@Leonard @graetdk 抱歉,没看到 post 最后一行。感谢。
我就是按照 Scrumdinger 走的,学到一半发现各种排版方式都是只能按照官方走,自己排出来就很丑,也可能是我理解不到位哈哈,之前写过 Vue 一类的单页面前端,但是排版还是不太一样。
0x727A
0x727A
Feb 16, 2022
17
刚好需要这种记录时间间隔的软件,试试看,好用就订阅一下
moohng
moohng
Feb 16, 2022
18
你这个 UI 好漂亮,是自己设计的吗?我是前端开发,每次想做一个什么东西的时候,都卡在了 UI 上,然后就进行不下去了
graetdk
graetdk
OP
Feb 16, 2022❤️1
19
@moohng 是的,但是用的都是 iOS 的原生组件,我也是慢慢调的,觉得好看就保留,不好看就换一个这样
youthfire
youthfire
Feb 16, 2022
20
很棒的分享,一直也想尝试,然后又独守在 Python 上没有敢踏出一步
Hequndev
Hequndev
Feb 16, 2022 via iPhone
21
UI 真挺好看的,看了一下版本要求 IOS15.晚点试用看看。
Pazakui1259
Pazakui1259
Feb 16, 2022❤️10
22
花了点时间试了试您的 App ,发现了一些问题,希望能在细节上继续优化:
1. 免费版我能添加 3 个另外的 track ,加上默认的 3 个我就有 6 个了,超出了免费版我能用的 5 个。
2. 很多英语翻译不是很通顺,大小写没有正确使用,中间用了很多中文标点,结尾没有句号等。比如主界面的提示那里。
3. Set Track 那里的 section 的 header 希望能变成 footer ,明明是解释用的语句。
4. 主页的设置按钮可不可以改成 ToolbarItem(placement: .primaryAction)直接放在标题右边?
5. 内购的那个 Sheet 好像 ScrollView 前面还套了一层别的 view ,导致白色边框,而且没有关闭按钮,英文的文案也有打错,trail➡️trial 。
6. 希望所有的 picker 样式都能.pickerStyle(MenuPickerStyle()),默认的打开另一个页面的样式跳跃感很大不是很美观。
7. 添加 record 的加号和别的按钮都太靠近了。希望也能和上面那个主页设置按钮一样直接变成 ToobarItem ,编辑和分享可以放在屏幕下面。
8. 希望能支持 Application Shortcut ,就是能在桌面长按图标进行快捷操作,比如快速给某个 track 添加 record 。
9. 没有对无障碍进行优化,旁白情况下完全无法正常使用 App 。
Borden
Borden
Feb 16, 2022
23
楼主你那个大方块和小点点是用的 LazyGrid 么?我找不到一个定行定列的非 Lazy 的 grid view ,好难受
usVexMownCzar
usVexMownCzar
Feb 16, 2022❤️1
24
@qq316107934 教程也可以下载 raywenderlich 上面的书籍,有两种,一个学徒级的,还有一个 tutorial
《 SwiftUI Apprentice 》,《 SwiftUI by Tutorials 》
graetdk
graetdk
OP
Feb 16, 2022
25
@Pazakui1259 感谢!你提到的一些是我已经知道并且准备下个版本改的,有些是我真没想到的,我之后会更新的~
MakHoCheung
MakHoCheung
Feb 16, 2022
26
我 7 天 Swift 都没学完
xz410236056
xz410236056
Feb 16, 2022
27
swiftUI 现在很多功能还不完善(也有方便的地方),比 UIKit 功能少很多,storyboard Xib 也很方便。当玩具学习还行,项目上不太好用。
codespots
codespots
Feb 16, 2022
28
dk 的执行力好强啊
nl101531
nl101531
Feb 16, 2022
29
666 ,这个软件很有用
graetdk
graetdk
OP
Feb 16, 2022
30
@MakHoCheung 我也没学完,就能用的先学着
Immortal
Immortal
Feb 16, 2022
31
问个题外话
如果想搜索类似斯坦福等大学的优秀课程,能在什么地方看到课程列表或者怎么个搜索姿势?
直接在斯坦福等的 youtube 帐号下搜索吗
wwnje
wwnje
Feb 16, 2022
32
比我棒。。我用了一个月
UI 看起来很简洁
graetdk
graetdk
OP
Feb 16, 2022
34
@Immortal YouTube 有,B 站也有搬运的
Immortal
Immortal
Feb 16, 2022
35
@wwnje #33
谢谢
不过我指的是类似的 比如我想学其他方面的东西 想优先搜索优秀大学的课程 不一定是 swift
caisanli
caisanli
Feb 16, 2022
36
还是要有英文基础才能学
没有找到好的中文教程
要不就是太旧
Immortal
Immortal
Feb 16, 2022❤️1
37
在知乎找到一个列表
https://zhuanlan.zhihu.com/p/391591909
qq73666
qq73666
Feb 16, 2022
38
iOS15 以上?😓
catoncat
catoncat
Feb 16, 2022
39
有 bug ,我添加了一项「跳绳」追踪,然后编辑默认追踪里面的 「 Emotions 」 新加了两个选项,保存之后发现「跳绳」被新的 「 Emotions 」覆盖了。原来的「 Emotions 」还在。
环境:m1 mac
FightPig
FightPig
Feb 16, 2022
40
lz 执行能力很强啊
catoncat
catoncat
Feb 16, 2022
41
复现了,当编辑一个选项类型的追踪时,在添加选项时,输入完名字不点加号而是直接点右上角的更新时可以触发
daQiuQiu
daQiuQiu
Feb 16, 2022
42
执行力好高啊
graetdk
graetdk
OP
Feb 16, 2022
43
@crs0910 我没有复现,能否麻烦发个录屏给我哇?微信 Z3JlYXRkaw==
qiaobeier
qiaobeier
Feb 16, 2022
45
我光研究怎么上架就花了至少一个礼拜😂
graetdk
graetdk
OP
Feb 16, 2022
46
@crs0910 收到!我研究下,但目前真的还没对 Mac 或者 iPad 适配,看着有点辣眼睛,建议还是在手机上使用~
catoncat
catoncat
Feb 16, 2022
47
触发了上面的问题之后,删掉所有追踪的时候会崩溃退出,重新打开被删掉的会回来。
andyforxxx
andyforxxx
Feb 16, 2022
48
即刻上是不是也发过,我在即刻上也看到 lz 的动态😄
graetdk
graetdk
OP
Feb 16, 2022
49
@andyforxxx 是的,正是在下
x86
x86
Feb 16, 2022
50
原来是你,早些年在 V2EX 的一个微笑群见过楼主,印象很深
x86
x86
Feb 16, 2022
51
微信群
catoncat
catoncat
Feb 16, 2022
52
@graetdk 那可能就是同时显示双栏导致的状态更新问题。用了下手机版,很好,没问题。
ninevcat
ninevcat
Feb 16, 2022
53
赞 执行力很高
xff1874
xff1874
Feb 16, 2022
54
优秀,行动力也强。我也时不时有念头,一直没动手
iiqiu
iiqiu
Feb 16, 2022
55
面包多站长吗 厉害
AlwaysBee
AlwaysBee
Feb 16, 2022
56
@xz410236056 SwiftUI 3 我感觉还行,基本上我要做的功能都能实现了
eason1874
eason1874
Feb 16, 2022
57
网页不太行了,我也想做点 APP 卖

想知道做一款收费 iOS APP 需要什么条件呢?个人可以吗?我只知道注册要开发者费用
graetdk
graetdk
OP
Feb 16, 2022❤️1
58
@eason1874 个人就可以,699 一年的开发者会员费
xz410236056
xz410236056
Feb 16, 2022
59
@AlwaysBee #56 button 设置不同 Event 这种常见需求都需要通过复杂自定义实现
angith
angith
Feb 16, 2022
60
很棒,我以前也一直有做一个类似这样的小东西来记录生活😄
V9NN
V9NN
Feb 16, 2022
61
手持安卓,但是电脑是 macOS 系统,想用这个工具,楼主可以开放桌面端适配吗?(貌似苹果新开发套件支持跨平台)
graetdk
graetdk
OP
Feb 16, 2022
62
@V9NN 我研究一下
AmberJiang
AmberJiang
Feb 16, 2022
63
厉害啊 楼主 向你学习绑👍🤝
hccsoul
hccsoul
Feb 16, 2022
64
站长这是打算亲手写面包多的 ios 客户端?
jasonchen168
jasonchen168
Feb 16, 2022
65
追踪项名称不支持输入中文吗?
graetdk
graetdk
OP
Feb 16, 2022
66
@jasonchen168 支持啊,图是英文的 demo
graetdk
graetdk
OP
Feb 16, 2022
67
@hccsoul 我们有 iOS 同学了,用 OC 在写
Tyuans
Tyuans
Feb 16, 2022
68
溃疡吃维生素 c 真的管用,好的快些。
AlwaysBee
AlwaysBee
Feb 16, 2022
69
@xz410236056 我理解的 button 常见的 event 通常就是点击、长按、悬浮这些都有原生的实现呀。不知道你指的是哪些场景呢?如果是想包含多种 event ,貌似和 event 的监听顺序是有关系的
glovebx
glovebx
Feb 16, 2022
70
执行力很强了,我一直想学一直还没动手(今年一定学
lurui45
lurui45
Feb 16, 2022
71
长按记录弹框后的确认记录按钮能否不要放在右上角,单手很难按到。
graetdk
graetdk
OP
Feb 16, 2022
72
@lurui45 右上角是系统带的一个东西,用起来比较方便,我后面看能不能自己写一个好看点的放下面
xz410236056
xz410236056
Feb 16, 2022
73
@AlwaysBee #69 你理解的那些不叫 event 。。。是 Gesture 才对

这些才是 event ,点击和点击也是不同的,按下就触发,和按下松手才触发是两个事件。这些东西在 swiftUI 中是需要你自己自定义的,而且还挺麻烦。
AlwaysBee
AlwaysBee
Feb 16, 2022
74
@xz410236056 这些确实是没有,不过我还真没有遇到这类 event 的需求,可能业务还是太简单了
ktqFDx9m2Bvfq3y4
ktqFDx9m2Bvfq3y4
Feb 16, 2022
75
楼主执行力好强啊,我的 APP 都两年了还没弄好。当然两年是业余时间。
sillydaddy
sillydaddy
Feb 16, 2022
76
楼主厉害,执行力没得说。
SwiftUI 确实很易用,没有移动端开发经验的我,在仅看过那个 cs193p 教程后,就感觉非常有信心开发一个 App 了。
yunyuyuan
yunyuyuan
Feb 16, 2022
77
ui 挺好看的
rbe
rbe
Feb 16, 2022❤️1
78

app 大小好评
doitbull
doitbull
Feb 16, 2022
79
哈哈,在即刻看到了
declandragon
declandragon
Feb 16, 2022
80
牛逼了,支持一下
Chism
Chism
Feb 16, 2022 via Android
81
用 SwiftUI 开发的 App 是不是要求 iOS 11 以上才能安装?
graetdk
graetdk
OP
Feb 16, 2022
82
@Chism 我用了一些新特性,要求 iOS 15 。。。。
cssk
cssk
Feb 16, 2022 via iPhone
83
整个 tintcolor 都红色了,navigation bar 返回按钮是默认的蓝色,不协调
wingkwanli888
wingkwanli888
Feb 16, 2022
84
@graetdk last month, last quarter 那幾個控件叫什麼啊,第一次見這種 button
abc635073826
abc635073826
Feb 16, 2022
85
光执行力就得 5 星
WhiteQian
WhiteQian
Feb 16, 2022
86
@sillydaddy cs193p 都 50 个小时了,能看完也很强了
sillydaddy
sillydaddy
Feb 16, 2022
87
@WhiteQian 难道我们看的不是一个吗?
- https://cs193p.sites.stanford.edu 或者 https://www.youtube.com/playlist?list=PLpGHT1n4-mAsxuRxVPv7kj4-dQYoC3VVu
- 16 个视频
- 每个视频大概 80~90 分钟,总共约 22~24 小时

有 2 个 App 的开发过程,不一定都看,而且虽然讲得很细致,有些地方还是可以倍速播放的。
edinina
edinina
Feb 16, 2022 via iPhone
88
话说问问大伙儿零基础到这种程度的话,需要学点啥,大概多长周期。主要还是感兴趣
littlewing
littlewing
Feb 16, 2022
89
厉害,学 7 天,2-3 小时就能做成这样
littlewing
littlewing
Feb 16, 2022
90
我看了 7 天 rust ,还是一句都写不出来(手动狗头.jpg )
Mistwave
Mistwave
Feb 16, 2022 via iPhone
91
nice 啊 实现力超高
su0818
su0818
Feb 16, 2022 via iPhone
92
发现你这个 app 完全是之前一个帖子的需求啊

https://www.v2ex.com/t/832056?p=1

加油啊
Chism
Chism
Feb 16, 2022 via Android
93
@graetdk 哈哈,确实是 7 天
AsianChampion
AsianChampion
Feb 16, 2022 via iPhone
94
怎么不是中文,你的用户大部分也是中文用户啊
graetdk
graetdk
OP
Feb 16, 2022
95
@AsianChampion 做了中文和英文两个版本的,图用的是英文的,用户我希望能做全球化,虽然比较困难
Procumbens
Procumbens
Feb 16, 2022❤️2
96
@Immortal
我之前有整理过一些,主要是美国 Top 4 大学的公开课程: https://learncs.me/curriculum
以后有机会有时间我再加点
graetdk
graetdk
OP
Feb 17, 2022
97
@wingkwanli888 Picker ,style 为 segmented
Maskeney
Maskeney
Feb 17, 2022
98
之前用过一个类似的 叫 知我
wanacry
wanacry
Feb 17, 2022 via iPhone
99
美区貌似搜不到
dotfun
dotfun
Feb 17, 2022
100
App 做到这样很不错了,我也有学习 SwiftUI 的计划,希望能和楼主一样坚持下来
1  2  
❮ ❯
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3944 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 162ms · UTC 07:22 · PVG 15:22 · LAX 23:22 · JFK 02:22
♥ Do have faith in what you're doing.