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

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

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

image image image image image

实现的代码是:

//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];
}

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

第二组动画效果:

image image image

实现的代码:

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

 

下面看一下第三种效果:

image image image image image image

代码实现:

- (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/