Анимация CALayer из UIView в круглые углы
Я пытаюсь оживить округление углов моего зрения. Свойство cornerradius указан как animatible, но я не могу показаться, чтобы заставить его работать. Я на самом деле не могу получить какие-либо другие свойства для анимации, но углы-это то, что меня интересует. Вот мой код, и он чертовски прост:
[CATransaction begin];
[CATransaction setValue: [NSNumber numberWithFloat: 2.0f] forKey:kCATransactionAnimationDuration];
self.myView.layer.cornerRadius = 50.0f;
[CATransaction commit];
что я упускаю здесь, ребята? Углы становятся закругленными, но это происходит мгновенно, а не занимает 2 секунды.
3 ответов
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"];
Swift 2.2 версия:
let anim1 = CABasicAnimation(keyPath: "cornerRadius")
anim1.timingFunction = CAMediaTimingFunction.functionWithName(kCAMediaTimingFunctionLinear)
anim1.fromValue = 0
anim1.toValue = 50
anim1.duration = 2.0
myView.layer.addAnimation(anim1, forKey: "cornerRadius")
Swift 3.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))
Кажется, вы слишком много думаете об этом. Я смог обойтись без использования CoreAnimation. Вот что я сделал:--2-->
UIView.animate(withDuration: animationDuration) {
self.myView.layer.cornerRadius = 10.0
}