使用Core Animation更改cornerRadius

我正在尝试按以下方式更改button(OpenNoteVisible.layer)的圆angular半径:

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; [animation.layer setCornerRadius:140.0]; [OpenNoteVisible.layer addAnimation:animation forKey:@"cornerRadius"]; 

但是这段代码在[animation.layer setCornerRadius:140.0]处给出了一个错误; 我不明白为什么。 我已经导入了Quartz核心框架。

您正在设置animation对象的图层属性上的拐angular半径; 这个animation对象没有图层属性。

您需要在您正在animation的图层上设置圆angular半径,在这种情况下为OpenNoteVisible 。 您还需要确保animation对象的toValue与您在该图层上设置的值相匹配,否则会得到奇怪的animation。

你的代码现在应该是:

 CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"cornerRadius"]; animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; animation.fromValue = [NSNumber numberWithFloat:10.0f]; animation.toValue = [NSNumber numberWithFloat:140.0f]; animation.duration = 1.0; [OpenNoteVisible.layer setCornerRadius:140.0]; [OpenNoteVisible.layer addAnimation:animation forKey:@"cornerRadius"];