2 ответа

Лучший ответ

В зависимости от используемого инициализатора будет зависеть, будет ли он отображать уценку или нет. Вам не нужно использовать escape-символы, вам просто нужно правильно настроить строки.

Вот подробное описание того, как у вас может быть или нет уценка с локализацией или без нее.

  1. Если вы используете значение по умолчанию Text() и передадите строку прямо в него, тогда он будет считать, что вы передаете LocalizedStringKey, и он локализует его и отображает с пониженной отметкой. Дополнительную информацию можно найти здесь.

  2. Если у вас есть строка в качестве переменной, то SwiftUI будет использовать инициализатор Text(), где вы используете фактический String, и он будет отображать его без локализации и без уценки. Дополнительную информацию можно найти здесь.

  3. Если вы используете Text(verbatim:), он не будет использовать ни локализацию, ни уценку. Дополнительную информацию можно найти здесь.

  4. Если вы хотите использовать локализацию, но не использовать уценку, вам нужно создать localizedString, используя String(localized:), а затем передать ее в Text(). Дополнительную информацию можно найти здесь.

struct ContentView: View {

    let stringVariable = "This is *markdown*"

    let localizedString = String(localized: "This is *markdown*")

    var body: some View {
        VStack(spacing: 20) {

            // 1
            // Localization with markdown
            // https://developer.apple.com/documentation/swiftui/text/init(_:tablename:bundle:comment:)
            Text("This is *markdown*")

            // 2
            // No localization no markdown
            // https://developer.apple.com/documentation/swiftui/text/init(_:)-9d1g4
            Text(stringVariable)

            // 3
            // No localization no markdown
            // https://developer.apple.com/documentation/swiftui/text/init(verbatim:)
            Text(verbatim: "This is *markdown*")

            // 4
            // This is a localized string but no markdown
            // https://developer.apple.com/documentation/swift/string/3867985-init
            Text(localizedString)
        }
    }
}

Вышеупомянутое дает следующие

enter image description here

4
Andrew 16 Сен 2021 в 04:56

Вы можете создать Text с помощью инициализатора verbatim:

Text(verbatim: “1*2 = 2*1”)

Это поддерживается iOS 13 и позволяет обходить все преобразования и локализации.

https://developer.apple.com/documentation/swiftui/text/init(verbatim :)

1
Sami Kuhmonen 16 Сен 2021 в 04:48