在APP开发过程中,为了将APP以最美的视觉展现在用户面前,有时候动画或许是不错的选择,iOS提供了CATransition和CAAnimation等动画类,山人才疏学浅,给大家分享一下CATransition使用时的一些方法。
大家可以看到就可怜巴巴的四个效果,长时间的搜集,我又找到了几种,以下
大概就这么多了,多谢支持。
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIScrollView * scroll; //定义一个滚动视图,注意,CATransition动画是过渡动画,用于切换过渡,添加在视图上的,初始化的啥啥的大家自己写上吧。
CATransition *transition = [CATransition animation]; // 初始化一个动画对象
transition.duration = 0.4; // 动画持续的时间
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionFade; // 动画的类型,NSString型,官方的动画效果很难找,山人收集了一些动画效果,下面给大家展示
transition.subtype = kCATransitionFromTop; // 动画的子类型,用来表示某些如push的动画方向
[scroll.layer addAnimation:transition forKey:nil]; // 将动画添加到view得layer上。注意,动画都是在layer上出效果的,当切换滚动视图是就会出现效果
}
官方定义的动画有以下几种
CA_EXTERN NSString * const kCATransitionFade
__OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
CA_EXTERN NSString * const kCATransitionMoveIn
__OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
CA_EXTERN NSString * const kCATransitionPush
__OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
CA_EXTERN NSString * const kCATransitionReveal
__OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
/* Common transition subtypes. */
CA_EXTERN NSString * const kCATransitionFromRight
__OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
CA_EXTERN NSString * const kCATransitionFromLeft
__OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
CA_EXTERN NSString * const kCATransitionFromTop
__OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
CA_EXTERN NSString * const kCATransitionFromBottom
__OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
大家可以看到就可怜巴巴的四个效果,长时间的搜集,我又找到了几种,以下
@"cameraIris",
@"cube", // 立方体
@"fade", //淡入
@"moveIn",
@"oglFilp",
@"pageCurl",
@"pageUnCurl",
@"push",
@"reveal",
@"rippleEffect", // 水波
@"suckEffect"
前面说过,动画的类型是字符串类型的,所以将上面列出的字符串直接写在type后,就可以实现响应的效果
transition.type = @"rippleEffect";
当然这些动画同样可以用在viewController 的过渡中,
<pre name="code" class="objc">- (void)push
{
ViewController * view = [[ViewController alloc] init];
view.modalTransitionStyle = transition;
[self presentViewController:view animated:YES completion:^{
}];
}
上面这种过渡方式是不带导航的,如果要带导航push方法过渡,则如下
- (void)push
{
[self.navigationController.view.layer addAnimation:transition forKey:nil];
ViewController * view = [[ViewController alloc] init];
[self.navigationController pushViewController:view animated:NO];
}
大概就这么多了,多谢支持。