ios 视图切换动画效果

    技术2022-05-13  10

    在ios view与view间切换的动画效果这篇文章中简单介绍了一种动画效果,下面我详细介绍一下ios中页面间跳转系统自带的动画效果。

    动画效果可以参考:http://www.iphonedevwiki.net/index.php?title=UIViewAnimationState

    下面先介绍第一组动画效果:

        

     

    实现的代码是:

    //view1中的动画 - (IBAction)doUIViewAnimation:(id)sender{     [UIView beginAnimations:@"animationID" context:nil];     [UIView setAnimationDuration:10.5f];     [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];     [UIView setAnimationRepeatAutoreverses:NO];     UIButton *theButton = (UIButton *)sender;     switch (theButton.tag) {         case 0:             [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES];//oglFlip, fromLeft             break;         case 1:             [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES];//oglFlip, fromRight                  break;         case 2:             [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];             break;         case 3:             [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.view cache:YES];             break;         default:             break;     }     [self.view exchangeSubviewAtIndex:1 withSubviewAtIndex:0];     [UIView commitAnimations]; }

     

     

    主要是从不同的角度产生动画。

    第二组动画效果:

      

    实现的代码:

    - (IBAction)doPublicCATransition:(id)sender{     CATransition *animation = [CATransition animation];     //animation.delegate = self;     animation.duration = 10.5f;     animation.timingFunction = UIViewAnimationCurveEaseInOut;     animation.fillMode = kCAFillModeForwards;     //animation.removedOnCompletion = NO;     UIButton *theButton = (UIButton *)sender;     /*      kCATransitionFade;      kCATransitionMoveIn;      kCATransitionPush;      kCATransitionReveal;      */     /*      kCATransitionFromRight;      kCATransitionFromLeft;      kCATransitionFromTop;      kCATransitionFromBottom;      */     switch (theButton.tag) {         case 0:             animation.type = kCATransitionPush;             animation.subtype = kCATransitionFromTop;             break;         case 1:             animation.type = kCATransitionMoveIn;             animation.subtype = kCATransitionFromTop;             break;         case 2:             animation.type = kCATransitionReveal;             animation.subtype = kCATransitionFromTop;             break;         case 3:             animation.type = kCATransitionFade;             animation.subtype = kCATransitionFromTop;             break;         default:             break;     }     [self.view.layer addAnimation:animation forKey:@"animation"]; }

     

    下面看一下第三种效果:

         

    代码实现:

    - (IBAction)doPrivateCATransition:(id)sender{     //http://www.iphonedevwiki.net/index.php?title=UIViewAnimationState     /*     Don’t be surprised if Apple rejects your app for including those effects,     and especially don’t be surprised if your app starts behaving strangely after an OS update.     */     CATransition *animation = [CATransition animation];     animation.delegate = self;     animation.duration = 10.5f * slider.value;     animation.timingFunction = UIViewAnimationCurveEaseInOut;     animation.fillMode = kCAFillModeForwards;     animation.endProgress = slider.value;     animation.removedOnCompletion = NO;     UIButton *theButton = (UIButton *)sender;     switch (theButton.tag) {         case 0:             animation.type = @"cube";//—             break;         case 1:             animation.type = @"suckEffect";//103             break;         case 2:             animation.type = @"oglFlip";//When subType is "fromLeft" or "fromRight", it’s the official one.             break;         case 3:             animation.type = @"rippleEffect";//110             break;         case 4:             animation.type = @"pageCurl";//101             break;         case 5:             animation.type = @"pageUnCurl";//102             break;         case 6:             animation.type = @"cameraIrisHollowOpen ";//107             break;         case 7:             animation.type = @"cameraIrisHollowClose ";//106             break;         default:             break;     }     [self.view.layer addAnimation:animation forKey:@"animation"];     self.lastAnimation = animation;     if(slider.value == 1)         [self.view exchangeSubviewAtIndex:1 withSubviewAtIndex:0];//Just remove, not release or dealloc     else{         for (int i = 0; i < [self.view.subviews count]; i++) {             [[self.view.subviews objectAtIndex:i] setUserInteractionEnabled:NO];         }         isHalfAnimation = YES;     } }

    以上是ios中常用的动画效果,还有一些是利用2d自己写的动画效果,关于自定义动画以后在研究。

    源代码:http://easymorse-iphone.googlecode.com/svn/trunk/UIViewDemo/


    最新回复(0)