自定义过渡动画
来源:互联网 发布:零基础学java要多久 编辑:程序博客网 时间:2024/05/16 09:46
上一篇中说到过渡动画,使用CATransition,但是CATransition提供的动画类型太少了,而且苹果通过 UIView
+transitionFromView:toView:duration:options:completion: +transitionWithView:duration:opt ions:animations:方法提供了Core Animation的过渡效果,除了UIViewAnimationOptionTransitionCrossDissolve外,其他常量和CATransition的type提供的常量完全无关也不同。
**
UIView特性提供的动画
**
UIView特性中提供的几个常量如下:
UIViewAnimationOptionTransitionNone = 0 << 20, // default UIViewAnimationOptionTransitionFlipFromLeft = 1 << 20, UIViewAnimationOptionTransitionFlipFromRight = 2 << 20, UIViewAnimationOptionTransitionCurlUp = 3 << 20, UIViewAnimationOptionTransitionCurlDown = 4 << 20, UIViewAnimationOptionTransitionCrossDissolve = 5 << 20, UIViewAnimationOptionTransitionFlipFromTop = 6 << 20, UIViewAnimationOptionTransitionFlipFromBottom = 7 << 20,
使用方法请看下面代码:
[UIView transitionWithView:imageView duration:1.0 options:UIViewAnimationOptionTransitionCurlDown animations:^{ //cycle to next image UIImage *currentImage = imageView.image; NSUInteger index = [images indexOfObject:currentImage]; index = (index + 1) % [images count]; imageView.image = images[index]; } completion:NULL];
这个方法想必大家都很熟悉,博主也是在看到这里时才恍然大悟,原来这个方法是这样的,它不属于Core Animation,但却提供了Core Animation的过渡效果。
以上所说为UIView的特性提供的Core Animation过渡效果,在开发中属于比较常见的。
**
自定义动画
**
系统提供的动画毕竟是有限的,当一个动画用系统的属性解决不了怎么办?这事后就要自定义动画了,怎么自定义呢?我们都知道旋转,缩放,平移,把这些过程通过UIView的特性展现出来就组合成了一系列的动画,先看使用方法:
//截图 UIGraphicsBeginImageContextWithOptions(imageView.bounds.size, YES, 0.0);[imageView.layer renderInContext:UIGraphicsGetCurrentContext()];UIImage *coverImage = UIGraphicsGetImageFromCurrentImageContext();//拿到截图的图片,放置在原图位置坐操作UIView *coverView = [[UIImageView alloc] initWithImage:coverImage];coverView.frame = CGRectMake(80, 80, 150, 150);[self.view addSubview:coverView];//update the view color(we'll simply randomize the layer background color)CGFloat red = arc4random() / (CGFloat)INT_MAX;CGFloat green = arc4random() / (CGFloat)INT_MAX;CGFloat blue = arc4random() / (CGFloat)INT_MAX;self.view.backgroundColor = [UIColor colorWithRed:red green:green blue:blue alpha:1.0]; //perform animation (anything you like)[UIView animateWithDuration:1.0 animations:^{ //scale, rotate and fade the view CGAffineTransform transform = CGAffineTransformMakeScale(0.01, 0.01); transform = CGAffineTransformRotate(transform, M_PI_2); coverView.transform = transform; coverView.alpha = 0.0; UIImage *currentImage = imageView.image; NSUInteger index = [images indexOfObject:currentImage]; index = (index + 1) % [images count]; imageView.image = images[index]; } completion:^(BOOL finished) { //remove the cover view now we're finished with it [coverView removeFromSuperview]; }];
下面看下上面两种动画的效果:
这样看来,动画就没那么复杂了吧?类似的效果还有很多,方法也不限定,可以自己组合,还有一个就是利用前面说过的动画组和基础动画,关键帧动画来组合不同的动画效果。不知道的去翻前面的博客吧。
关于动画博主会不间断更新内容,欢迎关注。
最后不要把正事忘了,Demo下载地址:https://github.com/codeliu6572/Custom_Animation
- iOS7_自定义过渡动画
- 自定义过渡动画
- CATransition自定义UIViewController过渡动画
- iOS7自定义视图控制器过渡4-自定义手势过渡动画
- Android自定义ViewPager的过渡动画
- 自定义Push和Pop过渡动画
- 自定义iOS的过渡动画的效果
- iOS动画技术——iOS 7自定义过渡动画
- 过渡动画
- 过渡动画
- 过渡动画
- 自定义NavigationController 的Push 和 Pop过渡动画
- 删除mac osx过渡动画的默认/自定义设置
- 自定义过渡
- Android之过渡动画
- UIView过渡动画整理
- Android之过渡动画
- 关闭Activity过渡动画
- USACO Wormholes 解题日志
- 符号表(Symbol Table)
- DoG(Difference of Gaussian)
- CSS选择器
- 堆和栈的区别
- 自定义过渡动画
- 有关Logstash的笔记
- iOS 加载网络视频之(AVFoundation.framewor)的MPMoviePlayerController
- win10+cocos2d-x3.0rc开发指南(2)--完善版
- C++ 对象的内存布局(重复虚拟继承)
- [推荐]14款经典的MySQL客户端软件
- 快速排序
- Scala学习笔记(一)----Scala环境安装
- webAPP 背景图设置