SwiftUI - 组合多个文本视图

问题描述 投票:0回答:1

我是 SwiftUI 的新手,并试图了解如何组合多个文本视图,例如,由于设置背景颜色,这些文本视图最终可能成为不同的视图类型。下面是我当前的代码以及我目前所实现的目标。这是可行的,但是使用 HStack 它不能正确显示从左到右的文本。

如果可能的话,我宁愿合并所有文本视图,但无法弄清楚如何做到这一点,因为某些文本视图最终成为“任何视图”。我也尝试过修改器,但它似乎从未应用背景颜色。

谢谢!

private func getTexts() -> some View {
    HStack(alignment: .center, spacing: 5) {
        let words = note.text.components(separatedBy: " ")
        ForEach(words.indices, id: \.self) { index in
            let currentWord = words[index]
            if (currentWord.lowercased() == "Reading".lowercased()) {
                Text(currentWord)
                    .padding(.all, 4)
                    .background(.yellow)
                    .clipShape(RoundedRectangle(cornerRadius: 8, style: .continuous))
            }
            else {
                Text(currentWord)
            }
        }
    }
}

当使用上面的代码在屏幕上仅输出一行时,我得到如下所示的结果: one line works

我想要实现上面的图片,但是带有多行文本: multiline does not work

xcode swiftui
1个回答
0
投票

我也面临着和你类似的挑战。我发现一篇文章讨论了使用 AttributedString 的潜在解决方案。

struct ContentView: View {
    var message1: AttributedString {
        var result = AttributedString("Hello")
        result.font = .largeTitle
        result.foregroundColor = .white
        result.backgroundColor = .red
        return result
    }

    var message2: AttributedString {
        var result = AttributedString("World!")
        result.font = .largeTitle
        result.foregroundColor = .white
        result.backgroundColor = .blue
        return result
    }

    var body: some View {
        Text(message1 + message2)
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.