iPhone UIView Animasyon En İyi Uygulama

oy
140

iPhone'da görünüm geçişler animasyon için düşünülen en iyi yöntem nedir?

Örneğin, ViewTransitionselma örnek proje kodu gibi kullanır:

CATransition *applicationLoadViewIn = [CATransition animation];
[applicationLoadViewIn setDuration:1];
[applicationLoadViewIn setType:kCATransitionReveal];
[applicationLoadViewIn setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
[[myview layer] addAnimation:applicationLoadViewIn forKey:kCATransitionReveal];

ama şuna benzer net etrafında yüzen kod parçalarını da vardır:

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.75];
[UIView setAnimationDelegate:self];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:myview cache:YES];
[myview removeFromSuperview];
[UIView commitAnimations];

En iyi yaklaşım nedir? siz de bir pasajı sağlayabilir Eğer çok takdir ediyorum.

NOT: Ben düzgün çalışması için ikinci bir yaklaşım alamıyorsanız oldum.

Oluştur 10/03/2009 saat 14:52
kaynak kullanıcı
Diğer dillerde...                            


9 cevaplar

oy
117

Kaynaktan UIView referans yaklaşık sitesindeki bölümü beginAnimations:context:yöntemi:

Bu yöntemin kullanılması 4.0 ve üstü iPhone OS önerilmez. Bunun yerine blok tabanlı animasyon yöntemlerini kullanmalıdır.

Tom'un Yorum dayanan Blok tabanlı Canlandırma Ör

[UIView transitionWithView:mysuperview 
                  duration:0.75
                   options:UIViewAnimationTransitionFlipFromRight
                animations:^{ 
                    [myview removeFromSuperview]; 
                } 
                completion:nil];
Cevap 09/08/2010 saat 16:02
kaynak kullanıcı

oy
69

Ben güzel hafif animasyonlar bir sürü için ikincisi kullanıyoruz. Bunu iki görünüm crossfade kullanabilir veya başka önünde bir tane solmaya ya da fade out. Sen ben dışarı kilometre bir sürü alıyorum ... bir görünüm streç yapmak veya küçültmek olabilir, bir bayrak gibi başka bir görünümü çekebilirsiniz beginAnimation/ ' commitAnimations.

Yapabileceğiniz tek şey düşünmeyin:

[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:myview cache:YES];

İşte bir örnek:

[UIView beginAnimations:nil context:NULL]; {
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [UIView setAnimationDuration:1.0];
    [UIView setAnimationDelegate:self];
    if (movingViewIn) {
// after the animation is over, call afterAnimationProceedWithGame
//  to start the game
        [UIView setAnimationDidStopSelector:@selector(afterAnimationProceedWithGame)];

//      [UIView setAnimationRepeatCount:5.0]; // don't forget you can repeat an animation
//      [UIView setAnimationDelay:0.50];
//      [UIView setAnimationRepeatAutoreverses:YES];

        gameView.alpha = 1.0;
        topGameView.alpha = 1.0;
        viewrect1.origin.y = selfrect.size.height - (viewrect1.size.height);
        viewrect2.origin.y = -20;

        topGameView.alpha = 1.0;
    }
    else {
    // call putBackStatusBar after animation to restore the state after this animation
        [UIView setAnimationDidStopSelector:@selector(putBackStatusBar)];
        gameView.alpha = 0.0;
        topGameView.alpha = 0.0;
    }
    [gameView setFrame:viewrect1];
    [topGameView setFrame:viewrect2];

} [UIView commitAnimations];

Gördüğünüz gibi, alfa, çerçeveler ve manzaralı bile boyutları ile oynayabilir. Oynamak. Bunu yetenekleriyle şaşırabilirsiniz.

Cevap 04/05/2009 saat 09:22
kaynak kullanıcı

oy
52

fark animasyon üzerinde gerek kontrolün miktarı gibi görünüyor.

CATransitionYaklaşım, örneğin kurmak için size daha fazla kontrol ve dolayısıyla daha fazla şey verir. Zaman fonksiyonu. Bir nesneyi olmak, bunu sonraya saklayabilirsiniz, vb çoğaltılamaz kodunu azaltmak için ona tüm animasyonlar işaret etmek planı ayrı

UIViewSınıf yöntemleri yaygın animasyonlar için kolaylık yöntemleri vardır, ancak daha sınırlıdır CATransition. Örneğin, (sol çevirmek, aşağı kıvrılıp, kıvrılıp, sağ çevirmek) sadece dört olası geçiş türleri vardır. Eğer bir soldurma yapmak istiyorsa, bunu yapmak zorunda ya aşağı kazmak istiyorum CATransition'sgeçişi solmaya veya açık bir animasyon kurmak UIView'ın alfa.

Not CATransitionEğer keyfi bir belirlemenizi sağlayacak Mac OS X üzerinde CoreImagebir geçiş olarak kullanmak için filtreyi, ama şimdi duruyor gibi yoksun iPhone, üzerinde bunu yapamaz CoreImage.

Cevap 10/03/2009 saat 16:24
kaynak kullanıcı

oy
26

Biz bu basit kodunu kullanarak 5 ios görüntüleri canlandırabilirsiniz.

CGRect imageFrame = imageView.frame;
imageFrame.origin.y = self.view.bounds.size.height;

[UIView animateWithDuration:0.5
    delay:1.0
    options: UIViewAnimationCurveEaseOut
    animations:^{
        imageView.frame = imageFrame;
    } 
    completion:^(BOOL finished){
        NSLog(@"Done!");
    }];
Cevap 20/01/2012 saat 10:10
kaynak kullanıcı

oy
8

Gelen UIViewdokümanlar, bir bu işlevi hakkında okudum + iOS4

+ (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void (^)(BOOL finished))completion
Cevap 11/10/2011 saat 11:19
kaynak kullanıcı

oy
6

Neyse "Blok" yöntemi, artık-bir-gün tercih edilmektedir. Aşağıda basit bloğu açıklayacağız.

Aşağıda snipped düşünün. bug2 ve hata 3 imageViews vardır. Aşağıdaki animasyon 1 saniyelik bir gecikmeden sonra 1 saniye süre ile bir animasyon tarif etmektedir. bug3 bug2 merkezine merkeze taşınır. animasyon bunun kaydedilir tamamlandıktan sonra "Merkezi Animasyon Done!".

-(void)centerAnimation:(id)sender
{
NSLog(@"Center animation triggered!");
CGPoint bug2Center = bug2.center;

[UIView animateWithDuration:1
                      delay:1.0
                    options: UIViewAnimationCurveEaseOut
                 animations:^{
                     bug3.center = bug2Center;
                 } 
                 completion:^(BOOL finished){
                     NSLog(@"Center Animation Done!");
                 }];
}

O temiz Umut !!!

Cevap 08/03/2012 saat 05:12
kaynak kullanıcı

oy
4

Bu bağlantıyı iyi bir öğretici buldum. Bu bazı biri için yararlı olacağını umuyoruz.

UIView-animasyon öğretici

Cevap 05/10/2012 saat 08:08
kaynak kullanıcı

oy
2

İşte Kod Pürüzsüz animasyon için birçok geliştiriciler için yararlı Be olabilir olduğunu.
Bu öğretici kod bu parçacık bulundu.

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[animation setAutoreverses:YES];
[animation setFromValue:[NSNumber numberWithFloat:1.3f]];
[animation setToValue:[NSNumber numberWithFloat:1.f]];
[animation setDuration:2.f];
[animation setRemovedOnCompletion:NO];

[animation setFillMode:kCAFillModeForwards];
[[self.myView layer] addAnimation:animation forKey:@"scale"];/// add here any Controller that you want t put Smooth animation.
Cevap 03/07/2013 saat 08:19
kaynak kullanıcı

oy
1

en Swift 3 için denemek ve ödeme yapalım ...

UIView.transition(with: mysuperview, duration: 0.75, options:UIViewAnimationOptions.transitionFlipFromRight , animations: {
    myview.removeFromSuperview()
}, completion: nil)
Cevap 15/03/2017 saat 12:50
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more