读书人

IOS 自牵动画效果

发布时间: 2012-06-30 17:20:12 作者: rapoo

IOS 自带动画效果

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

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

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

IOS 自牵动画效果IOS 自牵动画效果IOS 自牵动画效果IOS 自牵动画效果IOS 自牵动画效果

?

实现的代码是:

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

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

第二组动画效果:

IOS 自牵动画效果IOS 自牵动画效果IOS 自牵动画效果

实现的代码:

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

?

下面看一下第三种效果:

IOS 自牵动画效果IOS 自牵动画效果IOS 自牵动画效果IOS 自牵动画效果IOS 自牵动画效果IOS 自牵动画效果

代码实现:

- (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自己写的动画效果,关于自定义动画以后在研究。

读书人网 >操作系统

热点推荐