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