【发布时间】:2011-08-22 08:01:00
【问题描述】:
我正在尝试为UIView 实例layer 的cornerRadius 的变化设置动画,但cornerRadius 的变化会立即发生。
代码如下:
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(10, 10, 100, 100)];
view.layer.masksToBounds = YES;
view.layer.cornerRadius = 10.0;
[UIView animateWithDuration:1.0 animations:^{
[view.layer.cornerRadius = 0.0;
}];
感谢所有愿意给我建议的人。
编辑:我设法使用Core Animation 为该属性设置动画,使用CABasicAnimation。
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"cornerRadius"];
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
animation.fromValue = [NSNumber numberWithFloat:10.0f];
animation.toValue = [NSNumber numberWithFloat:0.0f];
animation.duration = 1.0;
[viewToAnimate.layer addAnimation:animation forKey:@"cornerRadius"];
[animation.layer setCornerRadius:0.0];
【问题讨论】:
-
试试这个,让你的动画坚持新的价值观:
animation.removedOnCompletion = NO;animation.fillMode = kCAFillModeForwards; -
@MohammadAbdurraafay 不,请不要。这是使动画“坚持”的错误方式。
-
@DavidRönnqvist 为什么不应该使用
animation.removedOnCompletion = NO;?您在此处或您的回答中均未提供其他建议。 -
@DavidRönnqvist 链接未附加。
-
@user1763532 让我们再试一次:my answer here 解释了
removeOnCompletion = NO的一些问题,并提供了另一种解决方案。
标签: ios uiview core-animation uiviewanimation cornerradius