SwiftUI的“ .disabled”修改器的更改是否可以动画化?

时间:2020-06-04 09:49:05

标签: swift swiftui

我认为View.disabled(_:)修饰符会更改.foregroundColor的{​​{1}}(除了启用/禁用与之交互之外)。可以将颜色更改设置为动画吗?

我知道很容易用隐式动画(例如:View)对.opacity的变化进行动画处理。但是,.animation(.default)不能使用相同的功能。

请考虑以下代码:

.disabled

这将产生以下结果,呈现出平滑的不透明过渡:

animationSample

...另一方面,启用/禁用的颜色转换是二进制的。看起来不太好。

我当前的解决方法是根据视图的启用/禁用状态更改其不透明度。 因此,例如,如果视图被禁用,则不透明度为0.6。如果启用,则不透明度回到1.0。

但是感觉不对。必须有另一种方式。

1 个答案:

答案 0 :(得分:1)

可能的解决方案可以是与.colorMultipy结合使用,当然 disabled 颜色应通过实验匹配,但这会产生常见的动画效果

demo

.disabled(isDisabled)
.colorMultiply(isDisabled ? Color.gray /* to be selected to fit*/ : .white) // ?? animatable
.animation(.default)