我正在尝试动画化改变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;
- Mohammad Abdurraafayanimation.removedOnCompletion = NO;
?你在这里或者你的回答中都没有给出任何替代建议。 - Leon StoreyremoveOnCompletion = NO
存在的问题,并提供了一种替代方案。 - David Rönnqvist