UIView视图的动画功能,可以使在更新或切换视图时有放缓节奏、产生流畅的动画效果,进而改善用户体验。UIView可以产生动画效果的变化包括:

位置变化:在屏幕上移动视图。

  • 大小变化:改变视图框架(frame)和边界。
  • 拉伸变化:改变视图内容的延展区域。
  • 改变透明度:改变视图的alpha值。
  • 改变状态:隐藏或显示状态。
  • 改变视图层次顺序:视图哪个前哪个后。
  • 旋转:即任何应用到视图上的仿射变换(transform)。

创建UIView动画(块)——(指过渡效果的动画)

一.基本方式:使用UIView类的UIViewAnimation扩展
 UIView动画是成块运行的。发出beginAnimations:context:请求标志着动画块的开始;commitAnimations标志着动画块的结束。把这两个类方法发送给UIView而不是发送给单独的视图。在这两个调用之间的可定义动画的展现方式并更新视图。函数说明:

//开始准备动画+ (void)beginAnimations:(NSString *)animationID context:(void *)context;

//运行动画+ (void)commitAnimations;

具体二段动画代码:

 1 [UIView beginAnimations:nil context:nil]; 2 //setAnimationCurve来定义动画加速或减速方式 3 [UIView setAnimaitonCurve:UIViewAnimationCurveLinear];  4 [UIView setAnimationDuration:2.7]; //动画时长 5 [UIView setAnimationTransition:transition forView:self.view cache:YES]; 6 // operation>>> 7 [self.view exchangeSubviewAtIndex:0 withSubviewAtIndex:1]; 8 // end<<<<< 9 [UIView commitAnimations];10 11 CGContextRef context = UIGraphicsGetCurrentContext(); //返回当前视图堆栈顶部的图形上下文12 [UIView beginAnimations:nil context:context];13 [UIView setAnimaitonCurve:UIViewAnimationCurveEaseInOut];14 [UIView setAnimationDuration:1.0];15 // View changes go here16 [contextView setAlpha:0.0f];17 [UIView commitAnimations];

其中transition取值范围:UIView类本身提供四种过渡效果
UIViewAnimationTransitionNone 正常
UIViewAnimationTransitionFlipFromLeft 从左向右翻
UIViewAnimationTransitionFlipFromRight 从右向左翻
UIViewAnimationTransitionCurlUp 从下向上卷
UIViewAnimationTransitionCurlDown 从上向下卷

二.block方式:使用UIView类的UIViewAnimationWithBlocks扩展
要用到的函数有:

+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_0);//间隔,延迟,动画参数(好像没用?),界面更改块,结束块

+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_0); // delay = 0.0, options = 0

+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_0); // delay = 0.0, options = 0, completion = NULL

+ (void)transitionWithView:(UIView *)view duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_0);

+ (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void (^)(BOOL finished))completion __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_0); // toView added to fromView.superview, fromView removed from its superview界面替换,这里的options参数有效

三.core方式:使用CATransition类
iPhone还支持Core Animation作为其QuartzCore架构的一部分,CA API为iPhone应用程序提供了高度灵活的动画解决方案。但是须知:CATransition只针对图层,不针对视图。图层是Core Animation与每个UIView产生联系的工作层面。使用Core Animation时,应该将CATransition应用到视图的默认图层([myView layer])而不是视图本身。

使用CATransition类实现动画,只需要建立一个Core Animation对象,设置它的参数,然后把这个带参数的过渡添加到图层即可。
使用要引入QuartzCore.framework 代码#import <QuartzCore/QuartzCore.h>

示例代码:

 1 CATransition *transition = [CATransition animation]; 2 transition.duration = 0.7; 3 transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 4 transition.type = kCATransitionMoveIn;//{kCATransitionMoveIn, kCATransitionPush, kCATransitionReveal, kCATransitionFade}; 5  6 //更多私有{@"cube",@"suckEffect",@"oglFlip",@"rippleEffect",@"pageCurl",@"pageUnCurl",@"cameraIrisHollowOpen",@"cameraIrisHollowClose"}; 7 transition.subtype = kCATransitionFromLeft;//{kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromBottom}; 8  9 transition.delegate = self;10 [self.view.layer addAnimation:transition forKey:nil];11 12 // 要做的13 [self.view exchangeSubviewAtIndex:1 withSubviewAtIndex:0];

CATransition动画使用了类型type和子类型subtype两个概念。type属性指定了过渡的种类(淡化、推挤、揭开、覆盖)。subtype设置了过渡的方向(从上、下、左、右)。另外,CATransition私有的动画类型有(立方体、吸收、翻转、波纹、翻页、反翻页、镜头开、镜头关)。

(0034) iOS 开发之UIView动画(过渡效果)相关推荐

  1. ios开发之UIView和UIViewController

    UIView 表示屏幕上的一块矩形区域,负责渲染区域的内容,并且响应该区域内发生的触摸事件.它在 iOS App 中占有绝对重要的地位,因为 iOS 中几乎所有可视化控件都是 UIView 的子类. ...

  2. ios开发之UIView的frame、bounds跟center属性的区别(附图)

    博文暂时想到什么写什么,不顺理成章,不顺章成篇. 先看几个概念 坐标点Poit:向右侧为X轴正方向的值x,原点下侧为Y轴正方向的值y 大小Size:由宽度width和高度height构成,表示一个矩形 ...

  3. IOS开发之UIView

    2019独角兽企业重金招聘Python工程师标准>>> #import "AppDelegate.h" @interface AppDelegate () @en ...

  4. IOS开发之CALayer基本属性和使用

    IOS开发之CALayer基本属性和使用 // // ViewController.m // CALayer // // Created by 鲁军 on 2021/2/21. //#import & ...

  5. 图片轮播c语言,IOS开发之UIScrollView实现图片轮播器的无限滚动

    IOS开发之UIScrollView实现图片轮播器的无限滚动 简介 在现在的一些App中常常见到图片轮播器,一般用于展示广告.新闻等数据,在iOS内并没有现成的控件直接实现这种功能,但是通过UIScr ...

  6. iOS开发之c语言入门教程

    苹果作为移动互联的高端品牌,iOS操作系统也被用户公认为是最好用的移动互联网操作系统.据了解,曾一度拒绝为iOS平台对出浏览器的火狐在今年5月份的时候,他们却食言了.今天,Mozilla宣布iOS版F ...

  7. iOS开发之UI开发(UITableView)

    UITableView 继承自UIScrollView,性能极佳 UITableView的两种样式 UITableViewStylePlain列表样式 UITableViewStyleGrouped ...

  8. iOS开发之AVKit框架使用

    2019独角兽企业重金招聘Python工程师标准>>> iOS开发之AVKit框架使用 一.引言 在iOS开发框架中,AVKit是一个非常上层,偏应用的框架,它是基于AVFounda ...

  9. IOS开发之UI基础LOL英雄展示-15

    IOS开发之UI基础LOL英雄展示-15 // // ViewController.m // 15-英雄展示-单组数据 // // Created by 鲁军 on 2021/2/3. //#impo ...

最新文章

  1. Pytorch: 命名实体识别: BertForTokenClassification/pytorch-crf
  2. 测试nginx网站代码_在40行以下代码中使用NGINX进行A / B测试
  3. 时序预测的三种方式:统计学模型、机器学习、循环神经网络
  4. nginx 配置404错误页面
  5. C语言再学习 -- 详解C++/C 面试题 1
  6. 光流 | 基于Matlab实现Lucas-Kanade方法:方法1(附源代码)
  7. QML基础类型之point
  8. java 解密后为空_java RSA加密解密
  9. zabbix基础之环境搭建
  10. 从事web前端两年半后的迷茫
  11. python中的scipy基础知识_Python机器学习(五十二)SciPy 基础功能
  12. 软件项目管理随谈(2)——项目合同问题
  13. Cesium 加载地形数据
  14. java project 显示感叹号_项目工程上有感叹号或者差号
  15. 特斯拉中国裁员约10%,撕下了外企新能源的遮羞布!
  16. Google Earth Engine(GEE)——ee.Reducer.percentile筛选影像百分比案例分析
  17. Verilog设计4位CLA加法器电路,并仿真测试
  18. tampermonkey自动化学习(持续更新~)
  19. 语音情感识别中的音频检测算法学习
  20. 显示系统信息(System Info)

热门文章

  1. Java中生产者与消费者问题的演变
  2. Java提高篇——Java实现多重继承
  3. 教务查询子系统时序图
  4. s:iterator获取遍历数据的索引下标
  5. 【es6】es6学习笔记
  6. python 100题
  7. C++中cin输入类型不匹配解决方法
  8. Azure 执行模型
  9. Aerospike系列:5:安装AMC
  10. jS字符串大小写转换实现方式