#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-定时器与动画使用总结的更多相关文章

  1. CoreAnimation6-基于定时器的动画和性能调优

    基于定时器的动画 定时帧 动画看起来是用来显示一段连续的运动过程,但实际上当在固定位置上展示像素的时候并不能做到这一点.一般来说这种显示都无法做到连续的移动,能做的仅仅是足够快地展示一系列静态图片,只 ...

  2. iOS开发UI篇—核心动画(UIView封装动画)

    iOS开发UI篇—核心动画(UIView封装动画) 一.UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画 ...

  3. iOS开发UI篇—核心动画(转场动画和组动画)

    转自:http://www.cnblogs.com/wendingding/p/3801454.html iOS开发UI篇—核心动画(转场动画和组动画) 一.转场动画简单介绍 CAAnimation的 ...

  4. iOS开发UI篇—核心动画(关键帧动画)

    转自:http://www.cnblogs.com/wendingding/p/3801330.html iOS开发UI篇—核心动画(关键帧动画) 一.简单介绍 是CApropertyAnimatio ...

  5. iOS开发UI篇—核心动画(基础动画)

    转自:http://www.cnblogs.com/wendingding/p/3801157.html 文顶顶 最怕你一生碌碌无为 还安慰自己平凡可贵 iOS开发UI篇—核心动画(基础动画) iOS ...

  6. iOS开发UI篇—核心动画简介

    转自:http://www.cnblogs.com/wendingding/p/3801036.html iOS开发UI篇—核心动画简介 一.简单介绍 Core Animation,中文翻译为核心动画 ...

  7. 仿Material UI框架的动画特效

    Material UI是一款功能非常强大,界面却十分清新简洁的CSS框架,Material UI利用了Google的Material Design 全新设计语言,并且让每一个UI组件都变得非常独立,因 ...

  8. 模块:(日期选择)jquery、bootstrap实现日期下拉选择+bootstrap jquery UI自带动画的日期选择器

    一:jquery.bootstrap实现日期下拉选择 点击文本框弹出窗口 弹窗显示日期时间选择下拉 年份取当前年份的前后各5年 天数随年份和月份的变化而变化 点击保存,文本框中显示选中的日期 代码部分 ...

  9. 1.关于QT中的Graphics绘图,定时器,动画,将窗口中的内容打印到图片上,打印机,打印预览

     1 新建项目 A  修改pro中的内容如下: HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += gui widgets prints ...

  10. UI设计之动画—从虚拟到现实

    以下内容由摹客团队翻译整理,仅供学习交流,摹客iDoc是支持智能标注和切图的产品协作设计神器. 用户界面设计中的动画一直是这几年热议的话题,尤其活跃在概念动画领域.它为设计师提供创造性实验并推动UI动 ...

随机推荐

  1. tomcat 介绍

    Tomcat简介 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Sun和其他一些公司及个人共同开发 ...

  2. MariaDB备份和恢复

    一.为什么要备份? 灾难恢复:硬件故障.软件故障.自然灾害.黑客攻击.误操作: 测试二.要注意的要点: 能容忍最多丢失多少数据: 恢复数据需要多长时间内完成: 需要恢复哪些数据: (1)做还原测试,用 ...

  3. 开博第一篇,学习markdown

    Markdown学习 其实之前自己也一直有记录,不过是Evernote记录,没有分享出来,最近看了一些牛人博客,觉得也应该分享出来.和别人多交流,多学习.所以花了几小时学了一下Markdown语法,现 ...

  4. 推荐系统第2周--itemCF和userCF

    推荐系统分类 基于应用领域分类:电子商务推荐,社交好友推荐,搜索引擎推荐,信息内容推荐基于设计思想:基于协同过滤的推荐,基于内容的推荐,基于知识的推荐,混合推荐基于使用何种数据:基于用户行为数据的推荐 ...

  5. c++ 模板 不能 分离编译

    C++Template头文件和定义分开编译的问题 (1) // Foo.htemplate<typename T>class Foo{public:void f();}; // Foo.c ...

  6. java反射基础知识(三)

    原文地址:http://tutorials.jenkov.com/java-reflection/index.html http://www.cnblogs.com/penghongwei/p/329 ...

  7. python基础(数字、字符串、布尔值、字典数据类型简介)

    一 执行第一个python程序 1.下载安装python2.7和python3.6的版本及pycharm,我们可以再解释器中输入这样一行代码: 则相应的就打出了一句话.这里的print是打印的意思.你 ...

  8. 解释一下python中的//,%和**运算符

    //运算符执行地板除法(向下取整除),它会返回整除结果的整数部分 print(7//2) 这里整除后会返回3.5 同样的,执行取幂运算,ab会返回a的b次方 print(2**10) 最后,%执行取模 ...

  9. 软件测试工程师的Linux之路(持续更新修正)

    软件测试工程师成长必经之路—Linux学习. 测试工程师不同于运维工程师,所以在对不熟悉Linux的测试人员来说,先了解一些Linux系统的基本操作,能顺利开展测试工作即可,在强迫自己使用,熟悉命令行 ...

  10. [ufldl]Supervised Neural Networks

    要实现的部分为:forward prop, softmax函数的cost function,每一层的gradient,以及penalty cost和gradient. forwad prop forw ...