UIVew切换动画效果

UIKIT.frame 中的动画时针对UIVew 实现的,而 QuartzCode中的动画时针对 layer 实现的

- (IBAction)switchViews:(id)sender
{
/*
//检查yellowViewController.view 的超视图是否为nil 从而检查使用了哪个视图
//如果 yellowViewController.view 存在,但是并没有向用户显示 那么 self.yellowViewController.view.superview == nil 返回YES
//如果 yellowViewController 不存在,或者yellowViewController已经从内存中擦除,self.yellowViewController.view.superview == nil 同样会返回 YES
if (self.yellowViewController.view.superview == nil) {
if (self.yellowViewController == nil) {
YellowViewController *yellowController = [[YellowViewController alloc] initWithNibName:@"YellowView" bundle:nil];
self.yellowViewController = yellowController;
[yellowController release];
}

[blueViewController.view removeFromSuperview];
[self.view insertSubview:yellowViewController.view atIndex:0];
} else {
if (self.blueViewController == nil) {
BlueViewController *blueController = [[BlueViewController alloc] initWithNibName:@"BlueView" bundle:nil];
self.blueViewController = blueController;
[blueController release];
}

[yellowViewController.view removeFromSuperview];
[self.view insertSubview:blueViewController.view atIndex:0];
}
*/

/* 增加转换动画

//声明动画块,并指定时间
[UIView beginAnimations:@"view Flip" context:nil];//beginAnimations:context: 第一个参数接收动化块名称 第二个参数是一个(void *) 支持指定你希望将其指针于此动画块关联的对象
[UIView setAnimationDuration:1.25];//设置动画曲线,决定了动画的时间
//设置动画改变其速度,中间速度快,开始和结束速度慢
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

if (self.yellowViewController.view.superview == nil) {
if (self.yellowViewController == nil) {
YellowViewController *yellowController = [[YellowViewController alloc] initWithNibName:@"YellowView" bundle:nil];
self.yellowViewController = yellowController;
[yellowController release];
}

//选择翻转效果 缓存cache选项在动画开始时创建快照,并在动画的每个步骤使用这个图像,而不必重新绘制,除非视图在变换过程中需要改变
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES];

[blueViewController viewWillAppear:YES];//即将显示
[yellowViewController viewWillDisappear:YES];//即将不显示

[blueViewController.view removeFromSuperview];
[self.view insertSubview:yellowViewController.view atIndex:0];

[yellowViewController viewDidAppear:YES];//已经显示
[blueViewController viewDidDisappear:YES];//已经不显示
} else {
if (self.blueViewController == nil) {
BlueViewController *blueController = [[BlueViewController alloc] initWithNibName:@"BlueView" bundle:nil];
self.blueViewController = blueController;
[blueController release];
}

[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES];

[yellowViewController viewWillAppear:YES];
[blueViewController viewWillDisappear:YES];

[yellowViewController.view removeFromSuperview];
[self.view insertSubview:blueViewController.view atIndex:0];

[blueViewController viewDidAppear:YES];
[yellowViewController viewDidDisappear:YES];
}
//启动动画块
[UIView commitAnimations];

*/

//准备动画
CATransition *animation = [CATransition animation];
//动画持续时间
[animation setDuration:1.25f];
//动画速度
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];

if (self.yellowViewController.view.superview == nil) {
if (self.yellowViewController == nil) {
YellowViewController *yellowController = [[YellowViewController alloc] initWithNibName:@"YellowView" bundle:nil];
self.yellowViewController = yellowController;
[yellowController release];
}

//动画效果
//kCATransitionFade淡出
//kCATransitionMoveIn覆盖原图
//kCATransitionPush推出
//kCATransitionReveal底部显出来
[animation setType:kCATransitionFade];

//动画方向
//kCATransitionFromRight/ kCATransitionFromLeft(默认值)
//kCATransitionFromTop/kCATransitionFromBottom
[animation setSubtype:kCATransitionFromBottom];

[self.view.layer addAnimation:animation forKey:@"Reveal"];

[blueViewController.view removeFromSuperview];
[self.view insertSubview:yellowViewController.view atIndex:0];
} else {
if (self.blueViewController == nil) {
BlueViewController *blueController = [[BlueViewController alloc] initWithNibName:@"BlueView" bundle:nil];
self.blueViewController = blueController;
[blueController release];
}

//动画效果
//suckEffect三角
//rippleEffect水波
//pageCurl上翻页
//pageUnCurl下翻页
//oglFlip上下翻转
[animation setType:@"rippleEffect"];

//动画方向
//kCATransitionFromRight/ kCATransitionFromLeft(默认值)
//kCATransitionFromTop/kCATransitionFromBottom
//[animation setSubtype:kCATransitionFromBottom];

[self.view.layer addAnimation:animation forKey:@"suckEffect"];//开始动画

[yellowViewController.view removeFromSuperview];
[self.view insertSubview:blueViewController.view atIndex:0];
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值