我正在使用CAGradientLayer作为UIView的图层蒙版。目的是有可能只显示UIView的一部分,并对用户输入做出反应,通过修改CAGradientLayer来更改可见的视图部分。
所有这一切都运行正常,但我遇到了一个问题:要更改可见的UIView部分,我修改了CAGradientLayer的以下属性的值:
的startPoint 端点 位置
我在动画块之外更改这些值,但是更改会在屏幕中进行动画处理。看起来它是用默认的短动画执行的(可能是一秒长,很难分辨)。
我的问题是,为什么要改变动画?以及如何阻止动画? (事实上我想要一个动画,但由我自己控制,而不是默认的动画。)
作为一个额外的观察,我知道所有这些属性(startPoint,endPoint和locations)都被标记为可动画,但我的理解是这只意味着它们可以在动画块中设置以使动画更改。 / p>
答案 0 :(得分:2)
许多可动画的属性都有默认动画。设置它们时,会发生默认动画。
您可以通过在动画块中设置属性来覆盖默认动画。每次更改动画块中的属性时,该属性的所有先前动画都将被新动画替换。
答案 1 :(得分:0)
对CALayer的大多数更改都是在隐式动画下进行的(例如,它们会自动设置动画)。要防止这种情况,请将更新包装在以下代码中:
[CATransaction begin];
[CATransaction setDisableActions:YES];
// Your changes to the layer here...
[CATransaction commit];