ios - 使用 Core Animation 改变 cornerRadius

标签 ios core-graphics core-animation

我正在尝试通过以下方式更改按钮 (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/

相关文章:

ios - 从未排序的表 (ios) 获取时,AWS dynamoDB 限制或分页

java - 在 Objective-C 中处理 "final"参数的适当方式

ios - 阻止 NSString localizedStringWithFormat 添加逗号

ios - CALayer clip CGContextAddArc(制作 donut 幻灯片/饼图)

ios - UIImageView:获取转换后的 UIImage

cocoa - 如何消除有关启用核心动画层的警告

ios - 如何在不从 firebase For ios 获取值的情况下读取父节点名称

ios - 平滑 Core Graphics 曲线

iphone - 无法使用 CATRansform3DMakeRotation 在 xcode 中构建 iphone 项目

swift - CGAffineTransformMakeRotation 和 CGAffineTransformRotate 的区别