您的位置:首页 > 产品设计 > UI/UE

UIViewController的一些属性(CATrasition转场动画)

2015-03-25 19:17 148 查看
1.基本概念

//1.把svc添加为当前视图控制器的子视图控制器

[self addChildViewController:svc];

[svc release];

//2.查看当前视图控制器的子视图控制器 --> 数组

NSArray *childArr = self.childViewControllers;

NSLog(@"childArr = %@",childArr);

//显示子视图控制器的视图

NSArray *arr = self.childViewControllers;

//找到需要做处理的视图控制器

SecondViewController *svc = (SecondViewController *)[arr objectAtIndex:0];

[self.view addSubview:svc.view];

//removeFromSuperview&removeFromParentViewController

[svc.view removeFromSuperview];

//移除子视图控制器:移除后,原来的子视图控制器(svc)就不在当前视图控制器(self)的子视图控制器数组(self.childViewControllers)中了。

[svc removeFromParentViewController];

NSArray *arr1 = self.childViewControllers;

NSLog(@"arr1 = %@",arr1);

2.转场动画

// 转场动画 (layer层的动画)

- (void)buttonClick:(UIButton *)button

{

SecondViewController *svc = [[SecondViewController alloc] init];

/*

增加一个转场特效

xcode5 之前 需要导入QuartzCore.framework

导入头文件 <QuartzCore/QuartzCore.h>

xcode5之后 不需要导入 直接就可以用

*/

//首先创建一个转场动画对象

CATransition *animation = [CATransition animation];

/*

1.全局变量的形式

kCATransitionFade 交叉淡化过渡

kCATransitionMoveIn 新视图移到旧视图上面

kCATransitionPush 新视图把旧视图推出去

kCATransitionReveal 将旧视图移开,显示下面的新视图

2.用字符串表示

fade //交叉淡化过渡(不支持过渡方向)

push //新视图把旧视图推出去

moveIn //新视图移到旧视图上面

reveal //将旧视图移开,显示下面的新视图

cube //立方体翻滚效果

oglFlip //上下左右翻转效果

suckEffect //收缩效果,如一块布被抽走(不支持过渡方向)

rippleEffect //滴水效果(不支持过渡方向)

pageCurl //向上翻页效果

pageUnCurl //向下翻页效果

cameraIrisHollowOpen //相机镜头打开效果(不支持过渡方向)

cameraIrisHollowClose //相机镜头关上效果(不支持过渡方向)

//设置动画类型

animation.type = @"oglFlip";//字符串形式

//animation.type = kCATransitionFade;//可以写成全局变量的形式

//设置动画方向

/*

全局变量形式

kCATransitionFromBottom

kCATransitionFromLeft

kCATransitionFromRight

kCATransitionFromTop

/字符串常量形式:

fromLeft

fromRight

fromTop

fromBottom

*/

animation.subtype = @"fromLeft";//字符串常量

//animation.subtype = kCATransitionFromLeft;//全局变量形式

/*

kCAMediaTimingFunctionLinear 线性(匀速)

kCAMediaTimingFunctionEaseIn 先慢

kCAMediaTimingFunctionEaseOut 后慢

kCAMediaTimingFunctionEaseInEaseOut 先慢 后慢 中间快

kCAMediaTimingFunctionDefault 默认

*/

//设置动画的节奏

animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];

//设置动画时间

animation.duration = 3;

//把这个转场动画对象添加到一个视图的layer层

//把这个转场动画对象添加到导航控制器的view的layer层

//这个转场动画 执行完之后 会自动的把这个动画删除

// 将动画,添加到视图的layer上。

// 我们是要导航控制器切换视图,所以,添加在导航控制器的view上,如果是模态视图,添加到self.view.layer就可以了!

[self.navigationController.view.layer addAnimation:animation forKey:nil];

[self.navigationController pushViewController:svc animated:YES];

[svc release];

}

- (void)btn:(UIButton *)btn{

CATransition *animation = [CATransition animation];

animation.type = @"suckEffect";

animation.subtype = @"fromLeft";

animation.duration = 3;

animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];

//给view的layer 增加一个转场动画效果

[_view.layer addAnimation:animation forKey:nil];

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: