iPhone UIView animáció Best Practice

szavazat
140

Mi tekinthető a legjobb gyakorlat animációjára nézetátmenetek az iPhone?

Például a ViewTransitionsminta projekt alma használt kód, mint például:

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

de ott is kódrészlet lebeg a neten, hogy így néz ki:

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

Mi a legjobb megoldás? Ha tud szolgálni egy részletet is ez lenne nagy népszerűségnek örvend.

Megjegyzés: Már nem tudják, hogy a második megközelítés a megfelelő működéshez.

A kérdést 10/03/2009 14:52
a forrás felhasználó
Más nyelveken...                            


9 válasz

szavazat
117

A UIView referencia „szekció a beginAnimations:context:módszer:

E módszer alkalmazására van kedvét iPhone OS 4.0 és újabb. Akkor érdemes használni a blokk alapú animációs módszerek helyett.

Pl blokk alapú animáció alapján Tom megjegyzés

[UIView transitionWithView:mysuperview 
                  duration:0.75
                   options:UIViewAnimationTransitionFlipFromRight
                animations:^{ 
                    [myview removeFromSuperview]; 
                } 
                completion:nil];
Válaszolt 09/08/2010 16:02
a forrás felhasználó

szavazat
69

Már az utóbbi sok szép könnyű animációk. Ön tudja használni átúsztatáshoz két nézet, vagy fakó egyet előtt egy másik, vagy fakulnak ki. Tudod lőni a céllal, a másik felett, mint egy zászló, akkor lehet, hogy egy néző szakaszon vagy zsugorodó ... kapok egy csomó kilométer ki beginAnimation/ commitAnimations.

Nem hiszem, hogy minden, amit tehetünk:

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

Itt van egy minta:

[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];

Mint látható, akkor játszani alfa, keretek, sőt méretű céljából. Játszadozni. Meglepő lehet annak képességeit.

Válaszolt 04/05/2009 09:22
a forrás felhasználó

szavazat
52

A különbség úgy tűnik, hogy az összeget az ellenőrzés, amire szükség van az animáció.

A CATransitionmegközelítés révén jobban kézben, és ezért több dolgot létrehozni, pl. az időzítés funkciót. Mivel egy tárgy, akkor eltárolhatja későbbi, refactor pont minden animációt, hogy csökkenthető a kettős kód stb

A UIViewosztály módszerek kényelmét módszerek közös animációk, de sokkal korlátozottabb, mint a CATransition. Például, már csak négy lehetséges átmeneti típusok (fordítsa balra, flip jobb, összegömbölyödik, göndör le). Ha akartam csinálni egy elhalványul, ha volna, hogy akár ásni le CATransition'selhalványul az átállás, vagy hozzon létre egy explicit animáció a UIView„s alpha.

Vegye figyelembe, hogy CATransitiona Mac OS X megadható egy tetszőleges CoreImageszűrő használni, mint egy átmeneti, de jelenlegi formájában nem tudja ezt az iPhone, ami hiányzik CoreImage.

Válaszolt 10/03/2009 16:24
a forrás felhasználó

szavazat
26

Mi lehet animálni képeket ios 5 segítségével ezt az egyszerű kódot.

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!");
    }];
Válaszolt 20/01/2012 10:10
a forrás felhasználó

szavazat
8

A UIViewdocs, hogy egy olvasott ezt a funkciót iOS4 +

+ (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void (^)(BOOL finished))completion
Válaszolt 11/10/2011 11:19
a forrás felhasználó

szavazat
6

Egyébként a „Block” módszer preffered most egy nap. Meg fogom magyarázni az egyszerű mondat alább.

Tekintsük az alábbi snipped. bug2 és bogár 3. imageViews. Az alábbi animáció ismerteti egy animáció 1 másodperces időtartamú késéssel 1 másodperc. A bug3 elmozdul a központ bug2 központjától. Miután az animáció elkészült ez lesz bejelentkezve „Center animáció Kész!”.

-(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!");
                 }];
}

Remélem, hogy ez a tiszta !!!

Válaszolt 08/03/2012 05:12
a forrás felhasználó

szavazat
4

Találtam egy jó tutorial ebben a link. Remélem, ez hasznos lesz valaki.

uiview-animáció-bemutató

Válaszolt 05/10/2012 08:08
a forrás felhasználó

szavazat
2

Itt látható kód sima animáció, hasznos lehet sok fejlesztő.
Találtam ezt a kódrészletet ebből bemutató.

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.
Válaszolt 03/07/2013 08:19
a forrás felhasználó

szavazat
1

Csináljuk megpróbálja pénztár esetében Swift 3 ...

UIView.transition(with: mysuperview, duration: 0.75, options:UIViewAnimationOptions.transitionFlipFromRight , animations: {
    myview.removeFromSuperview()
}, completion: nil)
Válaszolt 15/03/2017 12:50
a forrás felhasználó

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