我想问一问以下情况是否可能,如果可以,我如何解决该问题。以下代码生成附件图像:
HStack(alignment: .firstTextBaseline) {
ZStack {
RoundedRectangle(cornerRadius: 5)
.foregroundColor(Color(UIColor.secondarySystemFill))
Text("Test")
.clipShape(RoundedRectangle(cornerRadius: 5))
.foregroundColor(.secondary)
.layoutPriority(1)
.padding(.all, 5)
}
Text("This is a very long message with more words than one line can handle bla blabla blablabl")
}
我曾考虑过以下方法,但没有一个使我走得很远:
Text()
+ Text()
而不是HStack
的Swift UI。由于此方法不允许使用背景颜色,因此无法使用(。background()
会将Text()
转换为某些View,因此我无法将其与其他Text()
结合使用)。我只能更改.foregroundColor
。UIKit
为UILabel
写一个NSAttributedString
包装器。我不太喜欢这种方法,因为用NSAttributedString
更改背景颜色也不是一个很好的解决方案。ZStack
,并可能以某种方式将.clipShape()
投向较长的右手Text()
,以使其向右移动一点。这种方法也很笨拙,因为我不太了解如何计算第一个字符串的长度,以便我可以移动第二个字符串。我丢失了某些东西,或者这不是您在Swift UI或UIKit中可以做的事情。