2012-10-14 8 views

cevap

22

Sen görüşleri katmanın konumunu canlandırmak Çekirdek Animasyon kullanabilirsiniz Bu eğitimde bazı fikir verebilir. Animasyonu additive olarak yapılandırırsanız, yeni mutlak konumu, sadece değişikliği (göreceli konumu) hesaplamayı zahmetine katlamak zorunda kalmazsınız. Bu yana

CABasicAnimation *hover = [CABasicAnimation animationWithKeyPath:@"position"]; 
hover.additive = YES; // fromValue and toValue will be relative instead of absolute values 
hover.fromValue = [NSValue valueWithCGPoint:CGPointZero]; 
hover.toValue = [NSValue valueWithCGPoint:CGPointMake(0.0, -10.0)]; // y increases downwards on iOS 
hover.autoreverses = YES; // Animate back to normal afterwards 
hover.duration = 0.2; // The duration for one part of the animation (0.2 up and 0.2 down) 
hover.repeatCount = INFINITY; // The number of times the animation should repeat 
[myView.layer addAnimation:hover forKey:@"myHoverAnimation"]; 

Eğer koduna QuartzCore.framework ve #import <QuartzCore/QuartzCore.h> eklemeniz gerekecektir Çekirdek Animasyon kullanıyor. Swift 3 ve Swift 4 için

+0

Bu adam daha iyi çalıştı! Anlamak daha kolaydı, aynı zamanda mantıklı olan farklı değerleri deneyebiliyordum! Çok teşekkürler!!! – Year3000

+0

Teşekkür ederim David. Zamanımı kurtardın. İyi çalışıyor. – Smita

0

Böyle bir görev için, bir görüntüyü UIView alt katmanına yerleştirmek ve ardından bu alt katman çerçevesini canlandırmak daha iyi olacaktır. http://www.raywenderlich.com/2502/introduction-to-calayers-tutorial

+0

sen bağlantılı öğretici animasyon nasıl açıklamıyor. –

+0

Katmanlardaki işlemler otomatik olarak animasyonludur. –

+0

Evet, bağımsız katman olsalar da örtük animasyonlar var, ancak bunlar arka arkaya animasyon yapmıyor vb. –

5

bu deneyin:

CGRect frm_up = imageView.frame; 
frm_up.origin.y -= 10; 

[UIView animateWithDuration:0.5 
    delay:0.0 
    options:UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeats 
    animations:^{ 
     imageView.frame = frm_up; 
    } 
    completion:NULL 
]; 
+0

Harika çalışıyor! Tek şey, yukarı ve sola doğru hareket etmesi. 0,0 işaretine gidiyormuş gibi diyagonal. – Year3000

+0

@ Year3000 bu nasıl? 1. Çerçevenin X yönüne kesinlikle hiçbir şey yapıyorum. 2. Değiştirdiğim tek şey y pozisyonudur, bununla birlikte otomatın olması gerekir (metot çağrısının 'options' argümanına bakınız). Eminim bir şey kaçırıyorsun. –

+0

IDK Bu garip. Benim çerçevem ​​(86, 198, 132, 217) & tavsiye ettiğin şeyi kullanıyorum ve resimgörüntüsü merkezi 0,0'ya çıkıyor. – Year3000

7

:

let hover = CABasicAnimation(keyPath: "position") 

hover.isAdditive = true 
hover.fromValue = NSValue(cgPoint: CGPoint.zero) 
hover.toValue = NSValue(cgPoint: CGPoint(x: 0.0, y: 100.0)) 
hover.autoreverses = true 
hover.duration = 2 
hover.repeatCount = Float.infinity 

myView.layer.add(hover, forKey: "myHoverAnimation") 
İlgili konular