现在开发 iOS/macOS 的 App 直接用 SwiftUI 可行吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NightVermouth
V2EX    Apple
/div>

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

  •  
  •   NightVermouth 2020-12-08 17:24:50 +08:00 3438 次点击
    这是一个创建于 1772 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    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
        17
    NightVermouth  
    OP
       2020-12-09 21:44:05 +08:00
    @JasonEWNL 我属于独立上架 /小公司起步这块的
    Bruce2077
        18
    Bruce2077  
       2021-04-01 21:39:57 +08:00
    看项目规模和场景,如果是中大型商业项目,暂时不要用,其它场景撸的飞起。
    我写了一个 SwiftUI & Combine 教程 app:Eul ( https://apps.apple.com/cn/app/eul/id1541991958
    目前正打算开发另一个 SwiftUI 的个人项目 : )
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2964 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 13:43 PVG 21:43 LAX 06:43 JFK 09:43
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86