【问题标题】:Changing cornerRadius using Core Animation使用核心动画改变cornerRadius
【发布时间】:2013-08-29 12:43:56
【问题描述】:

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

【问题讨论】:

  • 您可以将圆角半径设置为按钮。所以使用按钮对象

标签: ios core-graphics core-animation


【解决方案1】:

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

您需要在动画对象的图层上设置圆角半径,在本例中为 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"];

【讨论】:

    【解决方案2】:

    Swift 4解决方案如下

    import UIKit
    import PlaygroundSupport
    
    let view = UIView(frame: CGRect(x: 0, y: 0, width: 400, height: 400))
    view.backgroundColor = #colorLiteral(red: 1, green: 0.5763723254, blue: 0, alpha: 1)
    PlaygroundPage.current.liveView = view
    
    UIView.animate(withDuration: 2.5, animations: {
        view.layer.cornerRadius = 40
    }, completion: { _ in
        UIView.animate(withDuration: 0.5, animations: {
            view.layer.cornerRadius = 0
        })
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多