现在开发 iOS/macOS 的 App 直接用 SwiftUI 可行吗?

2020-12-08 17:24:50 +08:00
 NightVermouth

我看官方文档,SwiftUI 可以结合 UIKit 使用。所以我想能不能主用 SwiftUI,SwiftUI 中不能或者不方便实现的部分通过官方介绍的 UIViewRepresentable 和 UIViewControllerRepresentable 来引入 UIKit 解决。还是说依旧只用 UIKit,暂时不碰 SwiftUI ?

最近开始入门 Apple 开发的一点疑惑。

背景:想做一些复杂点的 App

2952 次点击
所在节点    Apple
18 条回复
Xusually
2020-12-08 17:34:05 +08:00
回答标题的问题:可以。
wobuhuicode
2020-12-08 18:30:11 +08:00
国内商业产品比较难,自己做的话随意吧
NightVermouth
2020-12-08 19:14:54 +08:00
@Xusually @wobuhuicode 谢谢两位
Elethom
2020-12-08 19:57:41 +08:00
SwiftUI 最大的问题在于封得太死,各种 undocumented behaviours 要熟悉 UIKit 才能明白是怎么回事。不做深入定制用起来没什么问题,而且开发成本可以降到相当低。
nieyujiang
2020-12-08 20:09:56 +08:00
自己玩随意,iOS14 only 都没问题,公司产品这么玩,分分钟被打死😂😂😂
damngood
2020-12-08 20:56:34 +08:00
根据 twitter 上开发者的反馈看来有坑, 而且还不算少.
估计也得看需求来. 有些需求就比较容易落到坑里面, 有些的话就还好.
我自己的话目前肯定还是主框架用 uikit, 局部 ui 用 swiftui 玩玩.
NightVermouth
2020-12-08 21:27:23 +08:00
@damngood 我也是这种担忧,反馈上看 SwiftUI 坑太多,不如 UIKit 来的稳重
imgbed
2020-12-08 21:36:24 +08:00
iOS12 之前的能运行吗?
oxromantic
2020-12-08 21:46:50 +08:00
iOS 13 警告
NightVermouth
2020-12-08 21:54:50 +08:00
@imgbed
@oxromantic
我主要是自己玩,没有这个顾虑
damngood
2020-12-08 22:14:22 +08:00
@NightVermouth 嗯, 是这样的. 但是如果是奔着学习的目的去的话那可以选择用 SwiftUI. 毕竟还迭代一两个版本后基本应该也要稳定了. 就和当年 Swift 一样, 4.0 才能算正真的 1.0 版本.
Leonard
2020-12-08 22:30:51 +08:00
不适配早期版本是可以。但是还是如楼上几位说的,自己项目随意,正经项目就先别上。
Building
2020-12-09 01:28:05 +08:00
只要页面复杂到一定程度,你就会发现,用 SwiftUI 还不如用 UIKit 。
icebarley
2020-12-09 14:17:48 +08:00
我最近刚上架的到期提醒 APP 就是主用 SwiftUI 写的( https://apps.apple.com/cn/app/如期而至 /id1538275500 )。刚开始的时侯还是 SwiftUI1.0,年中出了 SwiftUI2.0 之后,代码支持都断层了,所以部分功能还要分 2 种代码方式去写,最终体验也有区别,所以现在用的话用 SwiftUI2.0 支持得更好,但也是只能 iOS14 only 了
JasonEWNL
2020-12-09 21:09:08 +08:00
单纯问题是可以,但更重要的是你的定位(仅玩 / 独立上架 / 小公司起步 / 大公司接入,盲猜大概率是前两种)。
JasonEWNL
2020-12-09 21:23:52 +08:00
细说一下:

1. 仅玩:基础功能现在 SwiftUI 到 2.0 了基本都很完整,没有的用 Representable 也能达到能用(而且大部分都有实现所以大部分没有啥成本);

2. 独立上架 / 小公司起步:纠结的核心主要是支持系统( iOS 13+ 还是 14+)、有无 WebView (比如现在 SwiftUI 还没,得自己写 WKWebView 的 Representable )等,一般除非是主打本地功能且不太需要考虑老系统的独立应用,其他都很难回避上面两种问题。手头夏天写的一个可以参考一下: https://apps.apple.com/cn/app/%E8%BD%BB%E5%8C%97%E6%B4%8B/id1529084736,因为需要 2.0 的特性选择了 iOS 14+,另外有些自定义 View 的需求也用了一定的 Representable 妥协。

3. 大公司接入:虽然大概率不是,但如果是基本还是在 OC (尤其国内),而且考虑可能要放 SDK 啥的(也基本是基于 OC )除了新的 Widgets 就没 SwiftUI 啥事了。
NightVermouth
2020-12-09 21:44:05 +08:00
@JasonEWNL 我属于独立上架 /小公司起步这块的
Bruce2077
2021-04-01 21:39:57 +08:00
看项目规模和场景,如果是中大型商业项目,暂时不要用,其它场景撸的飞起。
我写了一个 SwiftUI & Combine 教程 app:Eul ( https://apps.apple.com/cn/app/eul/id1541991958
目前正打算开发另一个 SwiftUI 的个人项目 : )

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

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

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

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

© 2021 V2EX