13 Şubat 2012 Pazartesi

iPhone'da Animasyon












iPhone platformunun diğer platformlara göre en başarılı olduğu alanlardan birisi de animasyon yapma kolaylığıdır. UIView objeleri üzerindeki özellikler belirli zaman dilimleri verilerek istenildiği gibi değiştirilebilir. Bu sayede buton, resim gibi ekranda görüntülenen her türlü obje her türlü hareketi kolaylıkla yapabilmektedir.


Animasyon için aşağıdaki fonksiyon kullanılır;


[UIView beginAnimations:@"disappearSplashImageView" context:nil];

[UIView setAnimationDuration:5.5];

[UIView setAnimationDidStopSelector:@selector(animateOtherStuff:finished:context:)];

[splashImageView setAlpha:0.0];

[UIView commitAnimations];


Burada ilk satırda animasyona bir isim verilir. İkinci metod animasyonun süresini belirtir. AnimationDidStopSelector animasyon bittikten sonra çağırılacak metoddur ve animasyon bitişinde yapılacak işlemler burada belirtilir. Bundan sonra animasyona katılacak UIView nesneleri ve animasyon sonunda özelliklerinin ne olacağı tek tek belirtilir. Şekilde splashImageView nesnesi 5.5 saniye sonra gözden kaybolacaktır. commitAnimation metodu ise animasyonu başlatır.


- (void)animateOtherStuff:(NSString*) animationID finished:

(NSNumber*) finished context:(void*) context 

{

if ([animationID isEqualToString:@"disappearSplashImageView"]) {

[splashImageView release], splashImageView = nil;

}

}


animateOtherStuff metodu örneğimizde animasyon sonunda çağırılacak fonksiyon olarak belirtilmişti. Görüldüğü gibi animasyonId değişkeni splashImageView'ı yok edecek animasyona uyuyorsa splashImageView daha fazla kullanılmayacağından bellekten temizleme işlemleri çağırılmıştır. Burada istenildiği takdirde başka bir animasyon başlatılabilir.


iOS 4'ten itibaren kullanılan Block Animation sistemi ise yukarıdakine göre çok daha basittir.


    [UIView animateWithDuration:2.0

                     animations:^{ 

                         splashView.alpha = 0.0;

                     } 

                     completion:^(BOOL finished){

                         [splashView removeFromSuperview];

                     }];


Görüldüğü gibi block metodlar kullanılarak yapılan bu animasyonda süre animateWithDuration seçeneğinde belirtilir. animations bloğu içinde yapılacak animasyonlar tanımlanır. completion bloğu ise animasyon bittiğinde yapılacak işlemler için kullanılır.


Hiç yorum yok:

Yorum Gönder