1
charlie21 2021-06-11 00:21:45 +08:00
|
2
aptx4689 2021-06-11 00:46:55 +08:00
推荐斯坦福大学的 iOS 公开课
|
3
agagega 2021-06-11 01:33:58 +08:00 via iPhone 2
> 盲猜应该有不少公用的代码吧,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 基本可以算成熟了。 |
4
wd 2021-06-11 07:20:18 +08:00 via iPhone
不是应该选 react native 吗?一天就可以撸一个 app 出来。
|
5
JoJoJoJ 2021-06-11 08:04:10 +08:00 via iPhone
当然 swiftui 了
|
6
sanking 2021-06-11 08:37:16 +08:00 via iPhone
flutter 了解一下
|
7
holulu 2021-06-11 08:45:11 +08:00
同 Web 开发,买了本 SwiftUI 的书,边开边弄。
|
8
fumichael 2021-06-11 08:59:21 +08:00
也许可以上招聘网看看 iOS 开发的岗位招聘都要求些什么技术栈
|
10
Leonard 2021-06-11 09:10:34 +08:00
iOS 和 iPadOS 开发基本完全一样,都是 UIKit,就是少数几个 API 不一样而已。
macOS 用的 AppKit,差别也不是太大。 你随便弄懂一个,其他的就好说。 SwiftUI 可以多端共用,但是基于各平台操作逻辑和页面布局习惯不一样,可能你还得根据各端来改。 |
11
chiaf 2021-06-11 10:02:37 +08:00 1
https://www.hackingwithswift.com/
可以在这个网站上面学习,上面有简单的教程,不止是 swift 语言的,还有 uikit swiftUI,还有很多文章介绍一些功能的要怎么写。 如果你学过 type Script,就会感觉 swift 跟 ts 语法上面很像 |
12
fqy12300 2021-06-11 10:23:11 +08:00
直接小程序不是更香
|
13
wingkai OP @agagega 感谢回复,另外 swift 和 这些 swiftUI 、appkit 、uikit 的关系还是不太理解。
回想一下我学 web,先接触 html,有个基础的界面,然后是 css,美化这个界面,最后上 js,去控制并和 ui 交互。 但回到苹果 app,又是怎样的呢,难道这些框架是类似 jq,react 一般的存在?我不用他们也能写界面?做交互? |
14
agagega 2021-06-11 11:05:27 +08:00 via iPhone
@wingkai
HTML 生来就是描述式的(虽然是静态的),写「有一个表单里面有一个文本框」,然后就会生成有一个文本框的表单 而如果你接触过传统的 Win32 API 或者 Qt Widgets 编程的话,创建一个界面的代码实际上是过程式的:「新建一个表单对象,把文本框加入到表单里面,然后把这个表单设置成当前程序的根视图」。只不过面向对象的框架利用继承-覆盖的方式让你不用去写整个这个流程的代码。 至于说有没有更底层的方法可以写界面..Flutter 的底层实现是自己做的,算吧? |
15
dingwen07 2021-06-11 11:32:52 +08:00 via iPhone
> telegram 的时候发现它的三端 app,ux 都很统一体验也非常棒
怕不是没用过 Android 和 Telegram Desktop |
16
CommandZi 2021-06-11 11:51:44 +08:00
@wingkai Swift + SwiftUI + UIKit 就足够你开发 iOS 、macOS 、tvOS 的 App 了,AppKit 先不用管。
你说的有个基础的界面、美化这个界面、控制并和 ui 交互。苹果这里全都是 Swift 写的。Storyboard 技术除外,这个也可以先不用管。 |
18
okakuyang 2021-06-11 11:53:07 +08:00 2
@wingkai Swift 是编程语言 ,SwiftUI,AppKit,UIKit 是 UI 框架,
以前 AppKit 是 mac 电脑上的 Ui 框架,UIKit 是 ios 上的 UI 框架,后来苹果将 UIkit 也带到了 mac 电脑。 SwiftUI 是苹果最新的 UI 框架,与 UIkit 有很高的兼容,。支持一套技术栈开发 IOS MAC 平台的 App,甚至是一套代码,甚至不需要 if os(iOS) 这样的判断 就可以让代码 在对应平台出现适合的 UI 。 |
19
mcluyu 2021-06-11 12:39:52 +08:00
打开 Xcode, 新建一个 multiplatform 项目, 你会发现只有 swift 语言,UI 用 swiftUI, 三端通用。
但是对于初学者,我觉得要求未免有点高了,可以先学习下 iOS+iPadOS, 基本是通用的,新建一个 iOS 工程也是默认支持这两端的,语言 swift,UI 可以选用 storyboard 或者 swiftUI, 也不用着急了解他们是什么关系,新建工程,上手写就好了,搜索类似于 “如何开发一个 iOS APP” 这样的教程应该就不难理解了,直接学习基础语言是有点太乏味,也不能理解它到底如何开发成一个 APP 的。 |
20
yazinnnn 2021-06-11 13:01:42 +08:00
swift 是不是和 c# kotlin 很像?
感觉这三种语言跟哥仨一样 |
21
cz5424 2021-06-11 13:03:01 +08:00 via iPhone
@mcluyu 我是被这样坑了,结果发现 switfui 的好多问题都找不到答案,遇到了坑要自己摸索,还不如 uikit,一找就有答案。各大论坛还有一堆 objectC 的东西,都过时了
|
22
mcluyu 2021-06-11 13:20:30 +08:00
@cz5424 swiftUI 太新了, 这才第二年,很多东西没稳定下来, 至于 OC, 其实也没那么旧,特别国内应该绝大部分 APP,公司依然在使用,很多三方框架也依然是 OC 写的,因为 swift 基本可以直接调用 OC 写的大多数东西,反过来则需要做更多的兼容。
倒也确实有很多复制粘贴的文章,都是老旧的 API 过时的东西,新手不易甄别。 |
24
3dwelcome 2021-06-11 13:30:08 +08:00
@agagega “HTML 生来就是描述式的(虽然是静态的)"
然而 VUE 硬生生把 HTML 玩成了动态式的(手动狗头),每个节点都有属性控制 class 样式,随时随地用虚拟 DOM 来刷新页面的显示结构。 这是传统 UI 望尘莫及的,Win32 或者 QT 都是通过传递消息来响应和修改界面。 |
25
tutuge 2021-06-11 13:53:48 +08:00
@3dwelcome "这是传统 UI 望尘莫及的,Win32 或者 QT 都是通过传递消息来响应和修改界面。" - 再怎么虚拟 DOM 操作 HTML,都要经过浏览器渲染,都还是“原生”在默默干活。。。
|
26
jielong 2021-06-11 14:17:12 +08:00
我觉得想一步到位自己写其实很难。
我也是个前端最近有在学习,买了 onevcat 的书,准备直接照着书本 demo 写。中间难理解的地方就先了解一下有这么个东西,然后直接跳过,之后再按自己的思路去改动 demo,加强理解。 |
27
3dwelcome 2021-06-11 14:22:01 +08:00
@tutuge 可问题是用习惯了虚拟 DOM 后,就再也回不去了。有了 v-show 后,不可能再去写个函数,手动来控制 DOM 的显示和隐藏。
对于交互式 UI 界面,不管是传统 SDK 还是现代 UI,用 VUE 理念基本能通吃 60%~ 70%。剩下的定制控件和大型数据表没办法,只能慢慢手写功能。 尤雨溪在知乎上说过,VUE 虚拟 DOM 的 backend,可以是任何平台。不一定局限于 HTML 的。 |
28
HongJay 2021-06-11 14:25:15 +08:00
flutter flutter flutter
|
29
LINAICAI 2021-06-11 14:37:20 +08:00
swiftUI
|
30
fffang 2021-06-11 14:46:26 +08:00
native 端没有 html+css 这种标记式的 UI,用的是命令式 UI 方式,你需要在 controller 里写一个 View 添加到父 View 上去。现在有新式的声明式的 UI 方式,也就是 SwiftUI,同时它也是声明式的。SwiftUI 是用 Swift 实现的。Swift 和 app 的关系就像 js 和 webapp 的关系。
调试的话使用 xcode 左上角的运行按钮,在 Xcode 代码区域左侧可以添加断点。打包、发布需要使用 Xcode 顶端工具栏 Product 选项里的 Archive,然后 Distribute 到 iOS 市场或 Mac 市场,略有区别。他们都需要你提供开发者证书。 |
31
linhongye 2021-06-11 14:51:26 +08:00
想个项目出来, 上 swiftUI 直接撸, 不会就搜索, 水平突飞猛进.
英语水平要过关, swiftUI 只有英文资料能看. 想招 swiftUI, 职位说明得用英文写... |
32
HolmesYe123 2021-06-11 15:21:49 +08:00
lz 的前端思维太强了吧,搞其他端转不过来吧
|
33
Jiangzai 2021-06-11 15:37:01 +08:00
1. 语言的选择,iOS 目前有 Objective-C 和 Swift 两个,传统的大厂还是用 OC 的多些,打算个人开发可以直接学 Swift,未来可期,没有历史包袱。
|
34
huangyuhua2018 2021-06-11 15:44:59 +08:00
swiftUI 还没普及,感觉还得过个一两年,还是先得学会 UIKit 那一套
|
35
Jiangzai 2021-06-11 15:48:47 +08:00
0. 配置:Mac 电脑+Xcode+苹果设备(调试,也可暂无,使用模拟器) + AppleId 开发者账号,只注册不交钱的就行。
1. 语言的选择,iOS 目前有 Objective-C 和 Swift 两个,传统的大厂还是用 OC 的多些,打算个人开发可以直接学 Swift,未来可期,没有历史包袱。 2. 基本的语法在网上搜一下熟悉了就行。 3. 语法熟悉之后,还要了解一些苹果 UIKit 的基本 API,这才是开发 App 主要用到的东西,例如 UIButton 、UIView 、UITableView 、UICollectionView 等等,主要是视图上的,至于其他蓝牙、多线程用到再学就可以。 4. 掌握了这些就可以上手写一些小 demo 了,当然 SwiftUI 也可以考虑,更友好。 5. 教材我觉得可以先不用,介绍的很全,但是有不少其实暂时用不到,等遇到了瓶颈再找专门解决就行。推荐官网的文档!!! 6. Swift 只是一门语言,App 要运行起来,需要用到许多苹果封装的各种 Kit 才行。调试、打包这些都是 Xcode 的功能而已。 |
36
Jiangzai 2021-06-11 15:53:51 +08:00
另外说一句 flutter,我们公司现在开发就用,有好有坏。的确可以提效,但是有些能力必须借助于原生,也会遇到比较奇怪的问题,调试的时候其实还是要对应的 native 开发。另外,flutter 在 iOS 上的 UI 细节感觉没有原生那么好,毕竟是 google 推出的,怎么看都有安卓的味道
|
37
janus77 2021-06-12 20:54:06 +08:00
做小东西可以直接 swift,多端统一开发好像体验更好,另外 swift 也可以用于服务端
工具和软件基本都是苹果自己的一套,IDE+编译+发布都是 xcode,需要开发者账号,官网自带文档。 |
38
95276 2021-06-16 10:56:16 +08:00
11 楼说的网站很不错.
|
39
onevcat 2021-06-30 23:08:05 +08:00
什么!居然又有人要开始学 iOS 了?!
|
40
ryh 2021-07-06 12:44:52 +08:00
@onevcat 看见猫神,就想问 kingfisher 的缓存
我看 macOS 里是存在独立的目录而不是各个 app 的 sandbox 里的,那么有没有这种可能 app 某个 URL 的图片,比如说身份证 /隐私照片,是登录 /auth 后才能获取的,使用 kingfisher 缓存了,第 3 方其他的 app 知道这个 URL 的情况下,这个缓存会不会被第 3 方显示出来。 因为只是猜测所以没发到 GitHub issue 里,twitter 没法 message,只能发到这里,抱歉 |
41
onevcat 2021-07-07 07:32:47 +08:00 via iPhone
@ryh 可能的…这种 Kingfisher 没法帮你检测,可能需要自己实现一个 Cache Serializer 加一下密
|
42
onevcat 2021-07-07 07:35:30 +08:00 via iPhone
@ryh 如果是涉及隐私的东西 不管是不是有沙盒保护 个人建议要存本地的话 都是加密一下比较好。或者干脆跳过 disk 缓存
|
43
duhb 2021-07-09 20:25:05 +08:00
什么?竟然看到有人说 SwiftUI 已经基本成熟了?我们 iOS 开发界目前还都在认为这个东西是苹果的实验产物,以后能不能用和普及还未可知好嘛。
|
44
KeyboardManAnAn 2021-08-11 17:24:48 +08:00
@duhb 以后肯定是会普及的, 只是现在暂时可能不太敢尝试, 毕竟不太成熟, 现在新推出的主流 UI 框架都是声明式的, 这显然是一个潮流, SwiftUI, Jetpack Compose, Flutter, 包括还未正式推出的微软的 MAUI, 都是这个路数.
|