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

Posted

技术标签:

【中文标题】将 SwiftUI 中的文本与背景属性相结合会产生错误,因为无法将“某些视图”类型的值转换为预期的参数类型“文本”?【英文标题】:Combining Text in SwiftUI with a background property gives error as Cannot convert value of type 'some View' to expected argument type 'Text'? 【发布时间】:2020-04-25 13:05:37 【问题描述】:
 Group
                 Text("HI ")
                    .fontWeight(.heavy)
                    .background(Color.black)
                + Text("Hello again")
                    .fontWeight(.heavy)
            .padding()

我在 SwiftUI 中有这段代码,如果我不添加背景属性,组合 + 将按预期工作,添加后我相信视图不再是 Text 而是父 View 所以我不能在两个视图上使用 combine + 运算符,有什么简单的解决方案可以克服这个问题吗?我什至尝试创建自定义修饰符,但他们也将视图转换为父 View 而不是 Text 所以也不能使用 +,我尝试的另一个解决方案是创建自定义 UIKit 插件并转换为 SwiftUI 但这也是这个简单的任务要做很多工作,我的主要目标是在一些突出显示的文本中在我的文本之间添加背景。

谢谢

【问题讨论】:

【参考方案1】:

+只能用于Text.background修饰符输出不是Text,所以不能使用。

解决方案是改用HStack

HStack(spacing: 0) 
    Text("HI ")
        .fontWeight(.heavy)
        .background(Color.black)
    Text("Hello again")
        .fontWeight(.heavy)
.padding()

【讨论】:

谢谢,HStack 会使文本视图不可浮动,我的意思是当视图以不同的宽度显示时,它不会是优化的视图,因为文本会随着高度和多点的增加而浮动行@asperi

以上是关于将 SwiftUI 中的文本与背景属性相结合会产生错误,因为无法将“某些视图”类型的值转换为预期的参数类型“文本”?的主要内容,如果未能解决你的问题,请参考以下文章

Three.js:无法将背景通道与轮廓通道相结合

将 NLTK 文本特征与 sklearn 向量化特征相结合

scss 一个SCSS循环,将垂直(产品供应)与图标和彩色背景相结合。

将导航属性与实体框架相结合

在 SwiftUI 中使用 Text() 换行

将 postgres 函数与查询相结合