CALayer UIView animation with round corners

I am trying to revive the rounding of the corners of my gaze. The cornerRadius property is indicated as animated, but I cannot get it to work. Actually, I cannot get any other properties for the animation, but angles are what interests me. Here is my code and it is pretty simple:

[CATransaction begin]; [CATransaction setValue: [NSNumber numberWithFloat: 2.0f] forKey:kCATransactionAnimationDuration]; self.myView.layer.cornerRadius = 50.0f; [CATransaction commit]; 

What am I missing here? Corners are rounded, but instantly, rather than 2 seconds.

+8
source share
3 answers
 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"]; 
+9
source

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") 

Update:

As Mark noted, it’s best to use #keyPath to describe the #keyPath property:

 let anim1 = CABasicAnimation(keyPath: #keyPath(CALayer.cornerRadius)) 
+5
source

You seem to be pondering this. I could do without using CoreAnimation. Here is what I did:

 UIView.animate(withDuration: animationDuration) { self.myView.layer.cornerRadius = 10.0 } 
+1
source

Source: https://habr.com/ru/post/887295/


All Articles