6

Görünümümün köşelerinin yuvarlanmasını canlandırmaya çalışıyorum. CornerRadius özelliği, animasyonlu olarak listelenir, ancak çalışmasını sağlayamıyorum. Aslında diğer özelliklerden herhangi birini ya hareketlendirmek için alamıyorum ama köşeler ilgilendiğim nelerdir İşte benim kod, ve o güzel yama basit:.Köşeleri yuvarlamak için UIView CALayer Animasyonu

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

self.myView.layer.cornerRadius = 50.0f; 

[CATransaction commit]; 

Burada adamlar ne eksik? Köşeler yuvarlanır, ancak 2 saniye yerine anlıkdır.

cevap

8
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"]; 
+0

Bu kod nerede bulunur? viewDidLoad içinde mi? veya viewWillAppear? veya viewDidAppear? – picciano

+0

Bu bir tuşa basma eylemidir. –

+0

, yeni, geliştirilmiş bir yanıt için yukarı bakın. – picciano

4

Swift 2.2 sürümü:

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 sürümü:

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

Güncelleme:

Mark As Dikkat edilirse, özelliğinin tanımlanması için özelliği #keyPath kullanmaktır:

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

# keyPath (CALayer.cornerRadius) biraz daha iyi olur. –