使用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"];