译自:https://www.hackingwithswift.com/quick-start/swiftui/frequently-asked-questions-about-swiftui

很多人已经在问我关于SwiftUI的问题,我已经尽力请其他认识更多的人来尝试找到合适的答案。

所以,这里...

 

学习哪个:SwiftUI或UIKit?

这个问题被问了很多遍了,我在本书中添加了专门的章节,因此我可以更详细地讲:回答一个大问题:您应该学习SwiftUI,UIKit还是同时学习两者?

 

SwiftUI可以在哪里使用?

SwiftUI在iOS 13,macOS 10.15,tvOS 13和watchOS 6或这些平台的任何更高版本上运行。这意味着,如果您使用的应用程序必须支持iOS N-1甚至N-2(即当前版本和该版本之前的一个或两个),那么您甚至可能需要一两年的时间才能考虑迁移到SwiftUI 。

但是,重要的是不要将SwiftUI视为类似于Java的Swing或React Native的多平台框架。官方说法似乎是,SwiftUI不是一个多平台框架,而是一个用于在多个平台上创建应用程序的框架。

听起来可能是一样的,但是有一个重要的区别:Apple并不是说您可以在每个平台上使用相同的SwiftUI代码,因为有些事情是不可能的–无法在Mac上使用Apple Watch的数字王冠例如,并且类似地在watchOS应用上具有选项卡栏也将无法工作。

 

SwiftUI会取代UIKit吗?

不会。SwiftUI的许多部分直接建立在现有UIKit组件(例如UITableView)的顶部。当然,许多其他部分则没有,它们是SwiftUI而非UIKit呈现的新控件。

但是重点并不在于涉及UIKit的程度。相反,关键是我们不在乎。 SwiftUI或多或少完全掩盖了UIKit的行为,因此,如果您为SwiftUI编写应用程序,并且苹果在两年内用唱的大象代替了UIKit,那么您不必在意–只要苹果使大象具有相同的方法和属性即可该UIKit暴露于SwiftUI,您的代码不会改变。

 

SwiftUI是否使用自动布局?

尽管肯定会在幕后使用Auto Layout进行某些操作,但作为SwiftUI设计师并没有向我们展示过。取而代之的是,它使用了灵活的盒式布局系统,这对于来自Web的开发人员来说是熟悉的。

 

SwiftUI快吗?

SwiftUI快得惊人-到目前为止,在我所有的测试中,它似乎都超过了UIKit。与做到这一点的团队交谈后,我开始明白为什么:首先,他们积极地平整了图层层次结构,因此系统必须减少绘制工作,但是第二步,许多操作完全绕过了Core Animation,直接去了Metal进行了额外工作速度。

所以,是的:SwiftUI的速度非常快,而且所有这些都无需我们做任何额外的工作。

 

为什么看不到我的代码预览?

使用SwiftUI时,能够同时查看视图代码和视图预览(外观)非常有帮助。如果您可以看到代码而不是预览,则可能是尚未升级到macOS 10.15;必须先进行预览。

 

代码与预览的匹配程度如何?

对预览进行任何更改时,它还将更新生成的代码。同样,如果更改代码,它也会更新用户界面。因此,代码和预览是相同的,并且始终保持同步。

 

为什么我的颜色看起来有点偏?

SwiftUI为我们提供了标准的系统颜色,例如红色,蓝色和绿色,但这些并不是UIColor可能习惯的纯红色,蓝色和绿色。取而代之的是,这些是可以自动适应明暗模式的新样式颜色,这意味着它们的外观将根据系统外观而变亮或变暗。

 

UIKit死了吗?

没有!苹果在本周的WWDC上播出了大量的新UIKit功能。如果Apple仍在WWDC上谈论UIKit的新功能,那您就很安全-没有使他们惊讶地淘汰它的风险。

 

您可以混合使用SwiftUI和UIKit的视图吗?

是!您可以将一个嵌入另一个,效果很好。