SwiftUI 中 Text("") 和 Text(verbatim: "") 初始化器之间的区别
Difference between Text("") and Text(verbatim: "") initializers in SwiftUI
我一直在关注 Apple 的 SwiftUI tutorials。在此过程中,我经常将 Text
对象与以下初始化程序一起使用:
/// Creates an instance that displays `content` verbatim.
public init<S>(_ content: S) where S : StringProtocol
现在,在本系列的 fifth tutorial 中,我遇到了 Text
的以下用法:
Text(verbatim: "")
接口中的描述与其他初始化程序相同:
/// Creates an instance that displays `content` verbatim.
public init(verbatim content: String)
问题
这两个初始化器有什么用,它们有什么不同/我什么时候使用哪个?
Text(verbatim: )
returns 文本 原样 - 因此是逐字的参数名称。
Text(:_)
检查参数是否是 本地化键 .
如果是,则 returns 相应的本地化字符串。
如果不是,它将打印文本逐字。
正如在介绍它的几个 WWDC19 会议中指出的那样,SwiftUI 默认情况下会尝试为您处理一大堆 good-platform-citizen 最终用户认为是基本要求的行为应用程序,但往往会使开发人员的工作复杂化。
本地化就是其中之一 — Text
初始化程序会自动做正确的事情。示例:
Text(“Some Text”)
将字符串文字视为本地化的,因为静态定义的文本几乎总是打算成为 UI 文本。
- 同上
Text(“\(items.count) items”)
,它正确地本地化格式字符串并插入内插值。
Text(item.name)
在运行时动态地提供不同的字符串,因此文本几乎可以肯定是无论语言环境如何都保持不变的“内容”(因为它来自用户,来自程序外部等)。
这意味着在 99% 的时间里,您只需进行最自然、最简洁的调用即可设置您的 UI,并最终得到一个可以进行本地化的应用程序,而无需返回和查看像使用其他 UI 框架一样更改一堆代码。
如果您的应用程序有一些不符合这些假设的地方,Text(verbatim:)
和 Text(_:tableName:bundle:comment:)
让您可以制作 non-localized 的静态文本和本地化的程序化文本。
我一直在关注 Apple 的 SwiftUI tutorials。在此过程中,我经常将 Text
对象与以下初始化程序一起使用:
/// Creates an instance that displays `content` verbatim.
public init<S>(_ content: S) where S : StringProtocol
现在,在本系列的 fifth tutorial 中,我遇到了 Text
的以下用法:
Text(verbatim: "")
接口中的描述与其他初始化程序相同:
/// Creates an instance that displays `content` verbatim.
public init(verbatim content: String)
问题
这两个初始化器有什么用,它们有什么不同/我什么时候使用哪个?
Text(verbatim: )
returns 文本 原样 - 因此是逐字的参数名称。
Text(:_)
检查参数是否是 本地化键 .
如果是,则 returns 相应的本地化字符串。
如果不是,它将打印文本逐字。
正如在介绍它的几个 WWDC19 会议中指出的那样,SwiftUI 默认情况下会尝试为您处理一大堆 good-platform-citizen 最终用户认为是基本要求的行为应用程序,但往往会使开发人员的工作复杂化。
本地化就是其中之一 — Text
初始化程序会自动做正确的事情。示例:
Text(“Some Text”)
将字符串文字视为本地化的,因为静态定义的文本几乎总是打算成为 UI 文本。- 同上
Text(“\(items.count) items”)
,它正确地本地化格式字符串并插入内插值。 Text(item.name)
在运行时动态地提供不同的字符串,因此文本几乎可以肯定是无论语言环境如何都保持不变的“内容”(因为它来自用户,来自程序外部等)。
这意味着在 99% 的时间里,您只需进行最自然、最简洁的调用即可设置您的 UI,并最终得到一个可以进行本地化的应用程序,而无需返回和查看像使用其他 UI 框架一样更改一堆代码。
如果您的应用程序有一些不符合这些假设的地方,Text(verbatim:)
和 Text(_:tableName:bundle:comment:)
让您可以制作 non-localized 的静态文本和本地化的程序化文本。