繁体   English   中英

在 SwiftUI 中围绕可变数量的图像环绕文本

[英]Wrap Text Around a Variable Amount of Images in SwiftUI

想知道是否有人对让Text组件在行首包装可变数量的Image组件有任何想法。 我想要完成的是这样的:

在此处输入图像描述

其中第一行之后的所有文本行都应该在该图像下方内嵌,并且该行的开头可能有多个图像(假设最多为 3 个)。 这是我目前拥有的代码:

var body: some View {
  VStack {
    HStack(alignment: .center) {
      BadgeImage(from: debugUrl)
      Text("\(Text(message.user).foregroundColor(message.color)): \(message.text)")
    }
    Spacer()
  }
  .padding(.horizontal, 10)
}

其中BadgeImage只是SwiftUIAsyncImage的包装器,它只处理URL object 创建(忽略VStackSpacer就在那里)。

我知道我们可以使用 SwiftUI 将Image插入到Text中,但这无济于事,因为图像的数量是可变的,并且必须从 URL 中获取,所以我必须使用AsyncImage 手动实现异步逻辑让我不得不做类似Text("\(someStateVar) some text...")之类的事情,但似乎 Swift 只允许在构建时进行图像插值,并且使用 state var 给我留下了字符串描述图像而不是文本中的实际Image组件。

核心问题是:有没有办法在一行的开头使用可变数量的some View组件来实现Text wrapping,或者这是否必须使用CoreText类的东西手动实现?

感谢@Fogmeister的提示! 只做Text(someImageVar) + Text("The text...)这很好用。我现在得到了这样的东西:

var body: some View {
  HStack(alignment: .bottom) {
    content
  }
  .padding(.horizontal, 10)
  .padding(.vertical, 1)
  .onAppear(perform: onAppear)
}

onAppear逻辑只是运行一个异步Task并最终执行content = content + Text(newlyLoadedImage)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM