SwiftUI:大写视图的本地化字符串,例如`文本`?

SwiftUI: Uppercase a localized string for a view, e.g. `Text`?

使用 Xcode beta 6 和 SwiftUI,使用 >localized< 字符串创建 Text 视图,如何将其大写 而不必使本地化字符串值大写?我想我想要一个 ViewModifier 来改变大小写,但它似乎不存在?

Text("SignIn.Body.Instruction".uppercased()) 会将本地化 key 大写,因此这将不起作用,如 .

中所述

Font 使用 smallCaps 修饰符如何?例如,Text("Hello World").font(Font.body.smallCaps()) 将呈现 "HELLO WORLD",但为了可访问性,底层字符串将保留其适当的本地化大写。

手动本地化然后大写。

extension String {
    func toUpperCase() -> String {
        return localized.uppercased(with: .current)
    }
    private var localized : String {
        return NSLocalizedString( self, comment:"")
    }
}

Text("SignIn.Body.Instruction".toUpperCase())

现在可以使用所有新的 textCase ViewModifier (Xcode 12 Beta 3),如下所示:

Text("SignIn.Body.Instruction")
    .textCase(.uppercase)

lowercase:

Text("SignIn.Body.Instruction")
    .textCase(.lowercase)