我正在尝试通过以下方式更改按钮 (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"];
但是这段代码在行 [animation.layer setCornerRadius:140.0] 处给出了一个错误; 我不明白为什么。我已经导入了 Quartz 核心框架。
最佳答案
您正在动画对象的图层属性上设置圆角半径;此动画对象没有图层属性。
您需要在要设置动画的对象的图层上设置圆角半径,在本例中为 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"];
关于ios - 使用 Core Animation 改变 cornerRadius,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18511359/