如何在HStack中的某些视图周围包装Text?

时间:2020-06-26 18:53:25

标签: ios swift swiftui

我想问一问以下情况是否可能,如果可以,我如何解决该问题。以下代码生成附件图像:

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")
}

enter image description here

现在,为了节省更多空间,我希望下一行向左移动,如下所示: enter image description here

我曾考虑过以下方法,但没有一个使我走得很远:

  1. 使用Text() + Text()而不是HStack的Swift UI。由于此方法不允许使用背景颜色,因此无法使用(。background()会将Text()转换为某些View,因此我无法将其与其他Text()结合使用)。我只能更改.foregroundColor
  2. 也许我可以用UIKitUILabel写一个NSAttributedString包装器。我不太喜欢这种方法,因为用NSAttributedString更改背景颜色也不是一个很好的解决方案。
  3. 使用ZStack,并可能以某种方式将.clipShape()投向较长的右手Text(),以使其向右移动一点。这种方法也很笨拙,因为我不太了解如何计算第一个字符串的长度,以便我可以移动第二个字符串。

我丢失了某些东西,或者这不是您在Swift UI或UIKit中可以做的事情。

0 个答案:

没有答案