#swiftui
Вопрос:
когда я передаю интерполированную строку с изображением в текстовое представление, она возвращается неправильно.
import SwiftUI
struct UserMediaCell: View {
var body: some View {
subView(label:"(Image(systemName: "ellipsis"))")
// shows incorrectly:
// Image(provider: SwiftUI.ImageProviderBox<SwiftUI.Image.(unknown context at $18c350410).NamedImageProvider>)
Text("(Image(systemName: "ellipsis"))")
// shows correctly. (sf symbol visible)
}
}
struct subView: View {
@State var label: String
var body: some View {
Text(label)
}
}
как мне решить эту проблему?
Комментарии:
1. Вы планируете всегда использовать шрифт SF в качестве части этикетки? Если это так, просто передайте имя изображения шрифта SF и используйте его в подпросмотре в виде текста(«(Изображение(системное имя: whateverFontYouPass)) это будет дополнительный текст») или, если вы используете только шрифт SF, Изображение(Системное имя: whateverFontYouPass)
2. Вам следует прочитать эту статью: linuxtut.com/en/d9b0fdadec8ca77a556c
3. @Yrb в подвиде будут использоваться смешанные строки и изображения, вот почему я сделал это таким образом, спасибо за помощь в любом случае!
4. @RajaKishan это кажется полезным, спасибо!
Ответ №1:
Это связано с тем, что ваш подвид принимает результат интерполяции строк в качестве строкового типа. Где текстовое представление, которое работает правильно, использует не строку для инициализации представления, а локализованный строковый ключ.
Измените свое подвидо, чтобы учесть это следующим образом:
// Structs, Classes, and Actors should start with a Capital Letter BTW
struct SubView: View {
@State var label: LocalizedStringKey
var body: some View {
Text(label)
}
}