使用Core Animation更改cornerRadius

use*_*474 7 core-animation core-graphics ios

我试图通过以下方式更改按钮的角半径(OpenNoteVisible.layer):

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"];
Run Code Online (Sandbox Code Playgroud)

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

WDU*_*DUK 22

您正在动画对象的图层属性上设置角半径; 此动画对象没有图层属性.

在这种情况下,您需要在您正在设置动画的图层上设置角半径OpenNoteVisible.您还需要确保toValue动画对象的匹配您在图层上设置的值,否则您将获得奇怪的动画.

您的代码现在应该是:

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"];
Run Code Online (Sandbox Code Playgroud)