如何更改 SwiftUI 编辑的微光效果的颜色
Posted
技术标签:
【中文标题】如何更改 SwiftUI 编辑的微光效果的颜色【英文标题】:How to change the Color of SwiftUI redacted shimmer effect 【发布时间】:2022-01-03 11:49:22 【问题描述】:我为我的主屏幕添加了闪光效果,如下面的代码。
VStack
TopView()
HomeView()
.redacted(.placeholder)
我得到了如下图所示的输出。
https://ibb.co/xFXQ2sk
微光视图显示彩色视图的颜色,但普通视图显示灰色。
我可以将整个微光视图更改为灰色而不在微光中显示彩色视图吗?
【问题讨论】:
【参考方案1】:一种方法可能是调整您的自定义子视图,以响应它们是否被要求显示为密文。
例如,如果您有一个在红色背景中添加一段文本的视图,例如:
struct LabelView: View
var text: String
var body: some View
Text(text)
.padding()
.background(Color.red)
然后,您可以在编辑时将其调整为使用灰色:
struct LabelView: View
@Environment(\.redactionReasons) var redactionReasons
var text: String
var body: some View
Text(text)
.padding()
.background(redactionReasons.contains(.placeholder) ? Color.gray : Color.red)
【讨论】:
yup 谢谢,使用这种方法我得到了我想要的结果,但我需要检查每个子视图的背景颜色,我们需要在每个结构视图中声明环境。有没有办法在普通类中编写环境。 我不认为有,真的。当您构建需要使用编辑的自定义视图时,您可以将其留给您的子视图(文本、图像等)来实现它们的默认行为或。但是当这不起作用时,默认的编辑会留在你不想要的元素中,比如背景颜色,你必须介入并告诉你自己的视图如何编辑自己。 如果您发现自己一遍又一遍地编写相同的自定义修订代码,您可以提取该通用代码——例如,创建您自己的redactableBackground
修饰符并使用它来代替 background
。这将减少散布在各处的自定义编辑代码的数量。
'redactableBackground' 是个好主意。我会试试的以上是关于如何更改 SwiftUI 编辑的微光效果的颜色的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI视图状态更改使用withAnimation()方法无动画效果的解决
SwiftUI视图状态更改使用withAnimation()方法无动画效果的解决
SwiftUI:如何使列表视图透明?如何更改列表视图背景颜色?