V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
graetdk
V2EX  ›  分享创造

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

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

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

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

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

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

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

加油啊
Chism
    93
Chism  
   295 天前 via Android
@graetdk 哈哈,确实是 7 天
AsianChampion
    94
AsianChampion  
   295 天前 via iPhone
怎么不是中文,你的用户大部分也是中文用户啊
graetdk
    95
graetdk  
OP
   295 天前
@AsianChampion 做了中文和英文两个版本的,图用的是英文的,用户我希望能做全球化,虽然比较困难
Procumbens
    96
Procumbens  
   295 天前   ❤️ 2
@Immortal
我之前有整理过一些,主要是美国 Top 4 大学的公开课程: https://learncs.me/curriculum
以后有机会有时间我再加点
graetdk
    97
graetdk  
OP
   295 天前
@wingkwanli888 Picker ,style 为 segmented
Maskeney
    98
Maskeney  
   295 天前
之前用过一个类似的 叫 知我
wanacry
    99
wanacry  
   295 天前 via iPhone
美区貌似搜不到
peterswan
    100
peterswan  
   295 天前
App 做到这样很不错了,我也有学习 SwiftUI 的计划,希望能和楼主一样坚持下来
1  2  
关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4576 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 63ms · UTC 09:19 · PVG 17:19 · LAX 01:19 · JFK 04:19
Developed with CodeLauncher
♥ Do have faith in what you're doing.