簡體   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