我一直在关注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)
这两个初始化函数分别是什么?它们有什么不同?何时使用?
答案 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"> </span></label>
</div>
初始化程序会自动执行正确的操作。例子:
Text
将字符串文字视为本地化,因为静态定义的文本几乎总是打算用作UI文本。 Text(“Some Text”)
,可正确定位格式字符串并插入插值。 Text(“\(items.count) items”)
在运行时动态地提供不同的字符串,因此,几乎可以肯定,文本是“内容”,无论区域设置如何(因为它来自用户,程序外部等),它们都保持不变。这意味着您有99%的时间可以进行最自然,最简洁的调用来设置您的UI,最后得到一个可以进行本地化的应用,而无需返回并更改大量代码。其他UI框架的方式。
如果您的应用中有些不符合这些假设,Text(item.name)
和Text(verbatim:)
可让您制作非本地化的静态文本和本地化的程序化文本。