Soh*_*ard 10 xcode swift swiftui swiftui-previews
在 SwiftUI 中使用不同的视图组合时,我们可以采取两种方法:
@ViewBuilder func makeButtonLabel() -> some View {
if isPlaying {
PauseIcon()
} else {
PlayIcon()
}
}
Run Code Online (Sandbox Code Playgroud)
struct SongRow: View {
var song: Song
@Binding var isPlaying: Bool
...
var body: some View {
HStack {
if isPlaying {
PauseIcon()
} else {
PlayIcon()
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道哪一个更好,我们如何衡量它?
从分析上来说,在我看来,第二个在更大的视图块中具有更好的性能,特别是我们可以在预览的加载时间中看到它,但我对此没有任何线索。
您可以假设性能差异可以忽略不计(如果有)。struct它们的重量非常轻 - 选择最适合您的环境的那种。HStack另外,在第二个示例中您不需要它,因为body它隐式是一个@ViewBuilder.
最后,由于没有可测量的影响,因此这两种方法都不比另一种更好。
通常,我更喜欢分割越来越大的视图,或者作为自己的视图更有意义。例如:
如果视图的组件严重依赖当前结构实例中的属性,则可以创建新的@ViewBuilder var buttonLabel: some View/@ViewBuilder func makeButtonLabel() -> some View并轻松访问相同的属性。
如果属性不相关,请将其拆分为单独的视图。这样做还可以更轻松地在应用程序中重用,并在 SwiftUI 预览中运行。
| 归档时间: |
|
| 查看次数: |
2250 次 |
| 最近记录: |