SwiftUI中Text(“”)和Text(verbatim:“”)初始化程序之间的区别

时间:2019-06-08 10:52:49

标签: swift 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)

问题

这两个初始化函数分别是什么?它们有什么不同?何时使用?

2 个答案:

答案 0 :(得分:5)

Text(verbatim: )将按原样返回文本 -因此逐字自变量名称。

Text(:_)检查参数是否为本地化键

如果是,它将返回相应的本地化字符串。

不是,它将打印文本 verbatim

答案 1 :(得分:1)

正如在介绍它的WWDC19的一些会议中所指出的那样,SwiftUI尝试默认为您处理一堆好平台公民的行为,这些行为最终用户会考虑应用程序的基本要求,但往往会使工作复杂化对于开发人员。

本地化就是其中之一-<div class="custom-control custom-checkbox" *ngIf="!column.IDM"> <input type="checkbox" class="custom-control-input" id="customCheck{{column.$id}}-write" name="customCheck{{column.$id}}-write" [(ngModel)]="column.canWrite" [checked]="column.canWrite" [disabled]="modalData.role != 1 || roleConfirm" (change)="checkSelected()"> <label class="custom-control-label" for="customCheck{{column.$id}}-write"><span class="hideMe">&nbsp;</span></label> </div> 初始化程序会自动执行正确的操作。例子:

  • Text将字符串文字视为本地化,因为静态定义的文本几乎总是打算用作UI文本。
  • Ditto for Text(“Some Text”),可正确定位格式字符串并插入插值。
  • Text(“\(items.count) items”)在运行时动态地提供不同的字符串,因此,几乎可以肯定,文本是“内容”,无论区域设置如何(因为它来自用户,程序外部等),它们都保持不变。

这意味着您有99%的时间可以进行最自然,最简洁的调用来设置您的UI,最后得到一个可以进行本地化的应用,而无需返回并更改大量代码。其他UI框架的方式。

如果您的应用中有些不符合这些假设,Text(item.name)Text(verbatim:)可让您制作非本地化的静态文本和本地化的程序化文本。