UIView动画和定时器
2015-11-15 09:23
369 查看
一、UIView基础方法介绍
UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画支持执行动画所需要的工作由UIView类自动完成,但仍要在希望执行动画时通知视图,为此需要将改变属性的代码放在[UIView beginAnimations:nil context:nil]和[UIView commitAnimations]之间
UIView常见方法解析:
UIView的具体实现方法的解释:
二、UIView实现 转场动画 也可以叫做 Block动画
1、使用UIView动画函数实现转场动画——单视图
2、使用UIView动画函数实现转场动画——双视图
3、设置视图view的过渡效果
三、UIImageView的帧动画
四、UIActivityIndicatorView 下载进度条的动画
五、常用的定时器
1、CADisplayLink
2、NSTimer
UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画支持执行动画所需要的工作由UIView类自动完成,但仍要在希望执行动画时通知视图,为此需要将改变属性的代码放在[UIView beginAnimations:nil context:nil]和[UIView commitAnimations]之间
UIView常见方法解析:
+ (void)setAnimationDelegate:(id)delegate 设置动画代理对象,当动画开始或者结束时会发消息给代理对象 + (void)setAnimationWillStartSelector:(SEL)selector 当动画即将开始时,执行delegate对象的selector,并且把beginAnimations:context:中传入的参数传进selector + (void)setAnimationDidStopSelector:(SEL)selector 当动画结束时,执行delegate对象的selector,并且把beginAnimations:context:中传入的参数传进selector + (void)setAnimationDuration:(NSTimeInterval)duration 动画的持续时间,秒为单位 + (void)setAnimationDelay:(NSTimeInterval)delay 动画延迟delay秒后再开始 + (void)setAnimationStartDate:(NSDate *)startDate 动画的开始时间,默认为now + (void)setAnimationCurve:(UIViewAnimationCurve)curve 动画的节奏控制 + (void)setAnimationRepeatCount:(float)repeatCount 动画的重复次数 + (void)setAnimationRepeatAutoreverses:(BOOL)repeatAutoreverses 如果设置为YES,代表动画每次重复执行的效果会跟上一次相反
UIView的具体实现方法的解释:
// 说明需要执行动画 [UIView beginAnimations:nil context:nil]; // 设置动画持续事件 [UIView setAnimationDuration:1]; // 设置转场动画 [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES]; // 交换子视图的位置 [self.view exchangeSubviewAtIndex:0 withSubviewAtIndex:1]; // 提交动画 [UIView commitAnimations];
二、UIView实现 转场动画 也可以叫做 Block动画
1、使用UIView动画函数实现转场动画——单视图
+ (void)transitionWithView:(UIView *)view duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion; 参数说明: duration:动画的持续时间 view:需要进行转场动画的视图 options:转场动画的类型 animations:将改变视图属性的代码放在这个block中 completion:动画结束后,会自动调用这个block 转场动画的类型 UIViewAnimationOptionTransitionNone UIViewAnimationOptionTransitionFlipFromLeft UIViewAnimationOptionTransitionFlipFromRight UIViewAnimationOptionTransitionCurlUp UIViewAnimationOptionTransitionCurlDown UIViewAnimationOptionTransitionCrossDissolve UIViewAnimationOptionTransitionFlipFromTop UIViewAnimationOptionTransitionFlipFromBottom
2、使用UIView动画函数实现转场动画——双视图
+ (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void (^)(BOOL finished))completion; 参数说明: duration:动画的持续时间 view:需要进行转场动画的视图 options:转场动画的类型 animations:将改变视图属性的代码放在这个block中 completion:动画结束后,会自动调用这个block 方法调用完毕后,相当于执行了下面两句代码: // 添加toView到父视图 [fromView.superview addSubview:toView]; // 把fromView从父视图中移除 [fromView.superview removeFromSuperview];
3、设置视图view的过渡效果
+ (void)setAnimationTransition:(UIViewAnimationTransition)transition forView:(UIView *)view cache:(BOOL)cache 设置视图view的过渡效果, transition指定过渡类型, cache设置YES代表使用视图缓存,性能较好
三、UIImageView的帧动画
UIImageView可以让一系列的图片在特定的时间内按顺序显示 相关属性解析: animationImages:要显示的图片(一个装着UIImage的NSArray) animationDuration:完整地显示一次animationImages中的所有图片所需的时间 animationRepeatCount:动画的执行次数(默认为0,代表无限循环) 相关方法解析: - (void)startAnimating; 开始动画 - (void)stopAnimating; 停止动画 - (BOOL)isAnimating; 是否正在运行动画
四、UIActivityIndicatorView 下载进度条的动画
UIActivityIndicatorView是一个旋转进度轮,可以用来告知用户有一个操作正在进行中,一般用initWithActivityIndicatorStyle初始化 方法解析: - (void)startAnimating; 开始动画 - (void)stopAnimating; 停止动画 - (BOOL)isAnimating; 是否正在运行动画 UIActivityIndicatorViewStyle有3个值可供选择: UIActivityIndicatorViewStyleWhiteLarge //大型白色指示器 UIActivityIndicatorViewStyleWhite //标准尺寸白色指示器 UIActivityIndicatorViewStyleGray //灰色指示器,用于白色背景
五、常用的定时器
1、CADisplayLink
CADisplayLink是一种以屏幕刷新频率触发的时钟机制,每秒钟执行大约60次左右 CADisplayLink是一个计时器,可以使绘图代码与视图的刷新频率保持同步,而NSTimer无法确保计时器实际被触发的准确时间 使用方法: 定义CADisplayLink并制定触发调用方法 将显示链接添加到主运行循环队列
2、NSTimer
iphone为我们提供了一个很强大得时间定时器 NSTimer 他可以完成任何定时功能: 我们使用起来也很简单,只要记住三要素就可以,具体得三要素是:时间间隔NSTimeInterval浮点型,事件代理 delegate和事件处理方法@selector();就可以用 + (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo; 来初始化一个 时间定时器 下面我写了一个很简单得例子 -(void)initTimer { //时间间隔 NSTimeInterval timeInterval =1.0 ; //定时器 NSTimer showTimer = [NSTimer scheduledTimerWithTimeInterval:maxShowTime target:self selector:@selector(addDateTimer:) userInfo:nil repeats:NO]; } //触发事件 - (void)addDateTimer:(NSTimer *)theTimer { NSDateFormatter dateFormator = [[NSDateFormatter alloc] init]; dateFormator.dateFormat = @"yyyy-MM-dd HH:mm:ss"; NSString *date = [dateformater stringFromDate:[NSDate date]]; if([date isEqualToString:@"2015-11-15 23:59:59"]) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:TITLE_NAME message:@"新年新气象" delegate:self cancelButtonTitle:nil otherButtonTitles:CONFIRM_TITLE, nil]; [alert show]; [alert release]; } [data release]; [dateFormator release]; }
相关文章推荐
- Educational Codeforces Round 1 B. Queries on a String 暴力
- 苹果开发 笔记(93) UITableView 的编辑模式
- 如何使用UIAutomation进行iOS 自动化测试(Part I)
- 有一个无效 SelectedValue,因为它不在项目列表中。
- 一. 使用代码实现UITableView的cell自定义高度-类似于微博主页
- IOS的UI基础02
- 为 Key-Value 数据库实现MVCC 事务
- UITableView 滚动到指定行cell
- GPUImage API文档之GPUImageContext类
- UISlider自定义滑块大小
- ios UiView转换成UIImage
- iOS 开发之带输入框的UIAlertView
- 基于POM(page oriented model)的UI测试脚本编写
- IOS之UIImageView--小实例项目--带音效的拳皇动画
- Arduino与Android蓝牙通信笔记
- easyui datagrid 编辑状态时,为列添加文本改变事件
- Dimensionality Reduction Techniques for Data Visualization
- 杭电ACM3117——Crixalis's Equipment
- 设计模式-生成器模式(Builder)
- require学习笔记总结