在 SwiftUI 中的某些视图周围环绕文本

Posted

技术标签:

【中文标题】在 SwiftUI 中的某些视图周围环绕文本【英文标题】:Wrap text around some view in SwiftUI 【发布时间】:2020-10-23 05:27:31 【问题描述】:

我放弃了。我想在某个视图周围环绕一个文本,但我找不到任何方法。

示例代码:

struct ListView: View 
    // actual text from @ObservedObject 
    var exText = "The statue of Laocoön and His Sons, also called the Laocoön Group (Italian: Gruppo del Laocoonte), has been one of the most famous ancient sculptures ever since it was excavated in Rome in 1506 and placed on public display in the Vatican,[2] where it remains. It is very likely the same statue praised in the highest terms by the main Roman writer on art, Pliny the Elder.[3] The figures are near life-size and the group is a little over 2 m (6 ft 7 in) in height, showing the *** priest Laocoön and his sons Antiphantes and Thymbraeus being attacked by sea serpents.[1]"
    
    @State var thumbnail:UIImage = UIImage()
    
    var body: some View 
        HStack 
            Image(uiImage: thumbnail)
                .resizable()
                .aspectRatio(contentMode: .fit)
                .frame(width: 70.0, height: 70.0)
                .background(Color.gray)
                //.onReceive() to update the image from the @ObservedObject 
            Text(exText)
                .lineLimit(nil)
        
    

如果我使用text(UIImage()) 插入图像,它会显示图像的底部与文本的第一行一致。另外,这个方法不允许我自定义 UIImage 视图。 .mask.clipShape.compositingGroup.contentShape 的所有方法都不起作用,因为它们只是剪切文本并且不让它环绕另一个视图。使用 UIKit,这可以通过使用 exclusionPaths 来实现,在 SwiftUI 中是否有与此等效的功能?

我用谷歌搜索并搜索了几个小时的文档,我只能找到这个问题here 也没有得到回答。快神们请回答我的祈祷!

【问题讨论】:

没有回答,因为文本只是不支持这样的功能。您必须手动进行此类布局,CoreText 会有所帮助。 【参考方案1】:

您可以使用“+”运算符。把图片放进去:Text(Image(…)).

Text("here is the star:") + Text(Image(systemName:"star")) + Text(", very easy.")

【讨论】:

我只检查了 systemName: ,它工作但无法添加像 .resizeable() 这样的修饰符

以上是关于在 SwiftUI 中的某些视图周围环绕文本的主要内容,如果未能解决你的问题,请参考以下文章

真的没有办法在 flexbox 中的图像周围环绕文本吗?

使用 iText 7 将文本环绕在单元格中的图像周围

将 SwiftUI 中的文本与背景属性相结合会产生错误,因为无法将“某些视图”类型的值转换为预期的参数类型“文本”?

在 R 中,如何将文本环绕在字符串中的所有单词周围,但要包含特定的单词(从左到右)?迭代和字符串操作

在 <i> 元素周围环绕文本

如何使用彩色文本框在图像周围环绕文本?