web 开发想学苹果原生 app 的开发,有什么好的建议

2021-06-10 23:54:13 +08:00
 wingkai
我这里说的是泛指 iOS macOS iPadOS 这种,

感觉 web 技术局限还是太大,很多事情不好做。
想稍微试着做点收费的小东西也不好搞。
或者只是针对某个小需求做个小软件,上 electron 太夸张也没必要,还耗电。
所以对开发苹果的 app 有了想法(以后可以也想做个独立开发者)

之所以囊括三个平台一起讲,是因为我在用 telegram 的时候发现它的三端 app,ux 都很统一体验也非常棒。
盲猜应该有不少公用的代码吧,UI 层面样式什么的,响应式开发之类?

回到话题,所以目前开发苹果的 app,都是怎样的呢?
css 、js 、html,这些对应到 app 上、调试、打包、发布。

有没有什么学习路线或者教材可以推荐的。
苹果官网倒是有个菜谱的 iOS 软件,但如果我想做另外两个平台的呢?好像没看到对应的教程。

光是看 swift 语言的教程,好像也还没搞懂它和 app 的关系……
7687 次点击
所在节点    iDev
46 条回复
charlie21
2021-06-11 00:21:45 +08:00
aptx4689
2021-06-11 00:46:55 +08:00
推荐斯坦福大学的 iOS 公开课
agagega
2021-06-11 01:33:58 +08:00
> 盲猜应该有不少公用的代码吧,UI 层面样式什么的,响应式开发之类?

iOS 和 macOS 的 UI 框架是不同的,一个叫 UIKit 一个叫 AppKit ;但底层和其他很多框架 API 是相同的,代码可以共用。苹果有一个技术叫 Mac Catalyst,是指在 macOS 上实现了 UIKit 的兼容层,可以把一部分 iPad 软件稍作修改重新编译放到 Mac 上跑(和 M1 的直接运行不一样)。

传统 iOS/macOS 开发的逻辑是 MVC,也就是用代码 /拖控件的方式创建界面,然后设置好每个控件的 controller,每个 controller 有一些可以 override 地方法以响应 UI 事件。

现在主推的是 SwiftUI,这个就很接近 MVVM 前端框架的玩法了。大部分代码可以在多端兼容,少部分单独适配改起来也很快。问题在于最低兼容 iOS 13/Catalina 和有些坑。今年 iOS 15 和 macOS 12 出了之后 SwiftUI 基本可以算成熟了。
wd
2021-06-11 07:20:18 +08:00
不是应该选 react native 吗?一天就可以撸一个 app 出来。
JoJoJoJ
2021-06-11 08:04:10 +08:00
当然 swiftui 了
sanking
2021-06-11 08:37:16 +08:00
flutter 了解一下
holulu
2021-06-11 08:45:11 +08:00
同 Web 开发,买了本 SwiftUI 的书,边开边弄。
fumichael
2021-06-11 08:59:21 +08:00
也许可以上招聘网看看 iOS 开发的岗位招聘都要求些什么技术栈
JoJoJoJ
2021-06-11 09:01:24 +08:00
@sanking 人家都说原生了
Leonard
2021-06-11 09:10:34 +08:00
iOS 和 iPadOS 开发基本完全一样,都是 UIKit,就是少数几个 API 不一样而已。
macOS 用的 AppKit,差别也不是太大。
你随便弄懂一个,其他的就好说。
SwiftUI 可以多端共用,但是基于各平台操作逻辑和页面布局习惯不一样,可能你还得根据各端来改。
chiaf
2021-06-11 10:02:37 +08:00
https://www.hackingwithswift.com/
可以在这个网站上面学习,上面有简单的教程,不止是 swift 语言的,还有 uikit swiftUI,还有很多文章介绍一些功能的要怎么写。
如果你学过 type Script,就会感觉 swift 跟 ts 语法上面很像
fqy12300
2021-06-11 10:23:11 +08:00
直接小程序不是更香
wingkai
2021-06-11 10:40:42 +08:00
@agagega 感谢回复,另外 swift 和 这些 swiftUI 、appkit 、uikit 的关系还是不太理解。

回想一下我学 web,先接触 html,有个基础的界面,然后是 css,美化这个界面,最后上 js,去控制并和 ui 交互。

但回到苹果 app,又是怎样的呢,难道这些框架是类似 jq,react 一般的存在?我不用他们也能写界面?做交互?
agagega
2021-06-11 11:05:27 +08:00
@wingkai
HTML 生来就是描述式的(虽然是静态的),写「有一个表单里面有一个文本框」,然后就会生成有一个文本框的表单

而如果你接触过传统的 Win32 API 或者 Qt Widgets 编程的话,创建一个界面的代码实际上是过程式的:「新建一个表单对象,把文本框加入到表单里面,然后把这个表单设置成当前程序的根视图」。只不过面向对象的框架利用继承-覆盖的方式让你不用去写整个这个流程的代码。

至于说有没有更底层的方法可以写界面..Flutter 的底层实现是自己做的,算吧?
dingwen07
2021-06-11 11:32:52 +08:00
> telegram 的时候发现它的三端 app,ux 都很统一体验也非常棒

怕不是没用过 Android 和 Telegram Desktop
CommandZi
2021-06-11 11:51:44 +08:00
@wingkai Swift + SwiftUI + UIKit 就足够你开发 iOS 、macOS 、tvOS 的 App 了,AppKit 先不用管。
你说的有个基础的界面、美化这个界面、控制并和 ui 交互。苹果这里全都是 Swift 写的。Storyboard 技术除外,这个也可以先不用管。
CommandZi
2021-06-11 11:52:45 +08:00
@CommandZi Swift + SwiftUI + UIKit + Foundation
okakuyang
2021-06-11 11:53:07 +08:00
@wingkai Swift 是编程语言 ,SwiftUI,AppKit,UIKit 是 UI 框架,
以前 AppKit 是 mac 电脑上的 Ui 框架,UIKit 是 ios 上的 UI 框架,后来苹果将 UIkit 也带到了 mac 电脑。
SwiftUI 是苹果最新的 UI 框架,与 UIkit 有很高的兼容,。支持一套技术栈开发 IOS MAC 平台的 App,甚至是一套代码,甚至不需要 if os(iOS) 这样的判断 就可以让代码 在对应平台出现适合的 UI 。
mcluyu
2021-06-11 12:39:52 +08:00
打开 Xcode, 新建一个 multiplatform 项目, 你会发现只有 swift 语言,UI 用 swiftUI, 三端通用。
但是对于初学者,我觉得要求未免有点高了,可以先学习下 iOS+iPadOS, 基本是通用的,新建一个 iOS 工程也是默认支持这两端的,语言 swift,UI 可以选用 storyboard 或者 swiftUI, 也不用着急了解他们是什么关系,新建工程,上手写就好了,搜索类似于 “如何开发一个 iOS APP” 这样的教程应该就不难理解了,直接学习基础语言是有点太乏味,也不能理解它到底如何开发成一个 APP 的。
yazinnnn
2021-06-11 13:01:42 +08:00
swift 是不是和 c# kotlin 很像?
感觉这三种语言跟哥仨一样

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/782776

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX