1

我有一个自定义UIView类上的属性的 setter 方法。如果它设置在UIView动画块中,我希望它以CABasicAnimation与动画相同的持续时间和缓动添加到视图层UIView。如何确定我是否在UIView动画块内,以及如何获得其持续时间和缓动曲线?

4

4 回答 4

2

非常简单..您可以使用将所有动画键应用于您的视图

[self.YourView.layer animationKeys];
于 2013-03-04T12:43:27.873 回答
1

基于这个问题,我做了这个扩展来UIView阻止动画:UIView+AnimatedProperty

它允许您在CAAnimations从动画块调用 setter 时运行。包括示例cornerRadius

于 2013-02-03T11:11:27.423 回答
1

您可以很容易地获得当前动画。例如,设置一个CATransaction

CAAnimation *animation = [self.layer animationForKey:self.layer.animationKeys.firstObject];
[CATransaction begin];
[CATransaction setAnimationDuration:animation.duration];
[CATransaction setAnimationTimingFunction:animation.timingFunction];

// CALayer animation here

[CATransaction commit];
于 2014-04-10T20:45:53.460 回答
0

[UIView animateWithDuration] 的文档指出

此方法使用 UIViewAnimationOptionCurveEaseInOut 和 UIViewAnimationOptionTransitionNone 动画选项立即执行指定的动画。

至于持续时间,您自己设置持续时间,所以您现在已经这样做了。

于 2013-02-02T18:09:01.503 回答