8

ビューの角の丸みをアニメートしようとしています。cornerRadiusプロパティはアニメート可能としてリストされていますが、動作させることができないようです。実際には、他のプロパティをアニメーション化することもできませんが、コーナーは私が興味を持っているものです。これが私のコードで、非常に単純です。

[CATransaction begin];
[CATransaction setValue: [NSNumber numberWithFloat: 2.0f] forKey:kCATransactionAnimationDuration];

self.myView.layer.cornerRadius = 50.0f;

[CATransaction commit];

私はここで何が欠けていますか?角は丸くなりますが、2秒かかるのではなく瞬時になります。

4

3 に答える 3

10
CABasicAnimation *anim1 = [CABasicAnimation animationWithKeyPath:@"cornerRadius"];
anim1.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
anim1.fromValue = [NSNumber numberWithFloat:0.0f];
anim1.toValue = [NSNumber numberWithFloat:50.0f];
anim1.duration = 2.0;
[self.myView.layer addAnimation:anim1 forKey:@"cornerRadius"];
于 2011-05-04T18:00:13.313 に答える
7

Swift 4.2 / 5

let anim1 = CABasicAnimation(keyPath: "cornerRadius")
anim1.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.linear)
anim1.fromValue = 0
anim1.toValue = 50
anim1.duration = 2.0
layer.add(anim1, forKey: "cornerRadius")

Swift 3 / 4.0

let anim1 = CABasicAnimation(keyPath: "cornerRadius")
anim1.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
anim1.fromValue = 0
anim1.toValue = 50
anim1.duration = 2.0
myView.layer.add(anim1, forKey: "cornerRadius")

アップデート:

マークが気付いた#keyPathように、アニメーション化するプロパティを説明するために使用する方がクリーンです。

let anim1 = CABasicAnimation(keyPath: #keyPath(CALayer.cornerRadius))
于 2016-12-21T08:33:00.240 に答える
1

あなたはそれを考えすぎているようです。CoreAnimationを使わなくてもうまくいくことができました。これが私がしたことです:

UIView.animate(withDuration: animationDuration) {
    self.myView.layer.cornerRadius = 10.0
}
于 2018-04-19T01:38:03.100 に答える