UI-定时器与动画使用总结
#pragma mark - 定时器 ************************************************************************************
//0.创建一个以下延时使用的方法
- (void)delayMethod { NSLog(@"execute"); }
1.performSelector方法================================================================
[self performSelector:@selector(delayMethod) withObject:nil afterDelay:1.0f];
此方式要求必须在主线程中执行,否则无效。
是一种非阻塞的执行方式,
暂时未找到取消执行的方法。
2.定时器:NSTimer==================================================================
创建定时器
NSTimer *timer = [NSTimer timerWithTimeInterval:1.0f target:self selector:@selector(delayMethod ) userInfo:nil repeats:NO];
把定时器 添加到当前主运行循环中
[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
下面这种方法创建的定时器,会自动的加入运行循环
[NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(delayMethod) userInfo:nil repeats:NO];
此方式要求必须在主线程中执行,否则无效。
是一种非阻塞的执行方式,
可以通过NSTimer类的- (void)invalidate;取消执行。
3. sleep方式==============================================================================
sleep(1.0f);
[NSThread sleepForTimeInterval:1.0f]; [self delayMethod];
此方式在主线程和子线程中均可执行。
是一种阻塞的执行方式,建方放到子线程中,以免卡住界面
没有找到取消执行的方法。
4.GCD方式 ===========================================================================
double delayInSeconds = 1.0;
__block ViewController* bself = self;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[bself delayMethod]; });
此方式在可以在参数中选择执行的线程。
是一种非阻塞的执行方式,
没有找到取消执行的方法。
#pragma mark - 1. 动画************************************************************************************
一. 通过定时播放多张图片动画=====================================================
1.1 定义 UIImageView
UIImageView *imgView = [[UIImageView alloc] initWithFrame:[UIScreen mainScreen].bounds];
1.2 定义 NSMutableArray 保存所有图片
NSMutableArray *animationImgsArrM = [[NSMutableArray alloc] init];
int num = 40;
for(int i = 0 ; i <= num ; i++ ){
图片的名称
NSString *imgName = [NSString stringWithFormat:@"%@_%02d.jpg", imgView, i ];
在创建比较小的,并且常用的图片时,可以使用imageNamed:方法创建
UIImage *img = [UIImage imageNamed:imgName];
如果创建的图片很多,并且比较大的话,应该使用这种方式创建
NSString *filePath = [[NSBundle mainBundle] pathForResource:imgName ofType:nil];
UIImage *img = [[UIImage alloc]initWithContentsOfFile:filePath];
把图片添加到数组中
[animationImgsArrM addObject:img];
}
设置动画属性
imgView.animationImages = animationImgsArrM; //动画内容
imgView.animationDuration = num * 0.08; //动画(总)时间间隔
imgView.animationRepeatCount = 1; //动画重复次数
..............
开始动画
[imgView startAnimating];
动画播放完成后,清除数组中的图片
1. [self performSelector:@selector(clearImages) withObject:nil afterDelay:imgView.animationDuration];
2. [imgView performSelector:@selector(setAnimationImages:) withObject:nil
afterDelay:imgView.animationDuration];
动画播放完成后,清除数组中的图片。 让imgView控件在动画完成后执行setAnimationImages:方法,该方法默认参数为nil
二.通过定时播放较少图片动画 , 通常在改变某一控件的frame时使用===================================
UIImageView *imgView1 = [[UIImageView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
imgView1.image = [UIImage imageNamed:@"head"];
1. 开始动画
[UIView beginAnimations:nil context:nil];
2. 动画持续2秒
[UIView setAnimationDuration:2.0];
2.1 取出原来的属性
CGPoint tempCenter = imgView1.center;
2.2 修改临时属性
tempCenter.y -= 200;
2.3 重新赋值
imgView1.center = tempCenter;
3. 提交动画
[UIView commitAnimations];
三. 通过block 创建动画 可以通过[UIView anima...]设置想要设置的某种动画=========================
[UIView animateWithDuration:2 animations:^{
imgView1.transform = CGAffineTransformMakeTranslation(0, 100 );
}];
[UIView animateWithDuration:<#(NSTimeInterval)#> animations:<#^(void)animations#> completion:<#^(BOOL finished)completion#>];
UI-定时器与动画使用总结的更多相关文章
- CoreAnimation6-基于定时器的动画和性能调优
基于定时器的动画 定时帧 动画看起来是用来显示一段连续的运动过程,但实际上当在固定位置上展示像素的时候并不能做到这一点.一般来说这种显示都无法做到连续的移动,能做的仅仅是足够快地展示一系列静态图片,只 ...
- iOS开发UI篇—核心动画(UIView封装动画)
iOS开发UI篇—核心动画(UIView封装动画) 一.UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画 ...
- iOS开发UI篇—核心动画(转场动画和组动画)
转自:http://www.cnblogs.com/wendingding/p/3801454.html iOS开发UI篇—核心动画(转场动画和组动画) 一.转场动画简单介绍 CAAnimation的 ...
- iOS开发UI篇—核心动画(关键帧动画)
转自:http://www.cnblogs.com/wendingding/p/3801330.html iOS开发UI篇—核心动画(关键帧动画) 一.简单介绍 是CApropertyAnimatio ...
- iOS开发UI篇—核心动画(基础动画)
转自:http://www.cnblogs.com/wendingding/p/3801157.html 文顶顶 最怕你一生碌碌无为 还安慰自己平凡可贵 iOS开发UI篇—核心动画(基础动画) iOS ...
- iOS开发UI篇—核心动画简介
转自:http://www.cnblogs.com/wendingding/p/3801036.html iOS开发UI篇—核心动画简介 一.简单介绍 Core Animation,中文翻译为核心动画 ...
- 仿Material UI框架的动画特效
Material UI是一款功能非常强大,界面却十分清新简洁的CSS框架,Material UI利用了Google的Material Design 全新设计语言,并且让每一个UI组件都变得非常独立,因 ...
- 模块:(日期选择)jquery、bootstrap实现日期下拉选择+bootstrap jquery UI自带动画的日期选择器
一:jquery.bootstrap实现日期下拉选择 点击文本框弹出窗口 弹窗显示日期时间选择下拉 年份取当前年份的前后各5年 天数随年份和月份的变化而变化 点击保存,文本框中显示选中的日期 代码部分 ...
- 1.关于QT中的Graphics绘图,定时器,动画,将窗口中的内容打印到图片上,打印机,打印预览
1 新建项目 A 修改pro中的内容如下: HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += gui widgets prints ...
- UI设计之动画—从虚拟到现实
以下内容由摹客团队翻译整理,仅供学习交流,摹客iDoc是支持智能标注和切图的产品协作设计神器. 用户界面设计中的动画一直是这几年热议的话题,尤其活跃在概念动画领域.它为设计师提供创造性实验并推动UI动 ...
随机推荐
- C# OpenFileDialog 的使用方法
OpenFileDialog openFileDialog = new OpenFileDialog(); //打开的文件选择对话框上的标题 openFileDialog.Title = " ...
- 简明python教程二-----对象
物理行:是你在编写程序时所看见的. 逻辑行:是Python看见的单个语句. 默认的,python希望每行都只使用一个语句,这样使得代码更加易读. 如果你想要在一个物理行中使用多于一个逻辑行,用分号“: ...
- Django-model基础(Day69)
阅读目录 ORM 创建表(建立模型) 添加表记录 查询表记录 F查询与Q查询 修改表记录 删除表记录 数据库回顾:http://www.cnblogs.com/yuanchenqi/articles/ ...
- SqlServer分页总结-摘抄
sqlserver2008不支持关键字limit ,所以它的分页sql查询语句将不能用mysql的方式进行,幸好sqlserver2008提供了top,rownumber等关键字,这样就能通过这几个关 ...
- 236. Lowest Common Ancestor of a Binary Tree(最低公共祖先,难理解)
Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree. According ...
- web标准的理解
首先,什么是web标准?web标准是w3c组织为解决跨浏览器兼容问题而推出的关于网页开发时应遵守的规范.在网页的四个部分中网页的内容是由网页开发者自己定义的,因此这一部分无法标准化,而网页的结构(HT ...
- DB 数据同步到数据仓库的架构与实践
背景 在数据仓库建模中,未经任何加工处理的原始业务层数据,我们称之为ODS(Operational Data Store)数据.在互联网企业中,常见的ODS数据有业务日志数据(Log)和业务DB数据( ...
- Flume1.7.0的安装与使用
Flume下载后,解压,新增一个配置文件,写入配置即可 我将配置文件写在 conf 下,取名为 flume-conf-spooldir.properties Flume 运行命令: bin/flume ...
- 什么是Zero-Copy?
概述 考虑这样一种常用的情形:你需要将静态内容(类似图片.文件)展示给用户.那么这个情形就意味着你需要先将静态内容从磁盘中拷贝出来放到一个内存buf中,然后将这个buf通过socket传输给用户,进而 ...
- C++ vector 多次删除第一个元素
转载声明: 代码都是来源于一下连接,做了一点点修改,为了记忆方便,故贴在这里,原文链接:http://blog.csdn.net/doctor_feng/article/details/1188078 ...