此文学习来源为:http://study.163.com/course/introduction/1002858003.htm

此工程文件实现功能:

1、通过点击“启动定时器”按钮,在定时器方法中每隔固定时长打印字符串,并实现view视图移动

2、通过点击“停止定时器”按钮,停止定时器方法的执行

3、以上操作可以重复执行

===========================ViewController.h脚本==============================

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

{

//定义一个定时器对象

//可以在每个固定时间发送一个消息

//通过此消息来调用相应的时间函数

//通过此函数可以在固定时间段来完成一个根据时间间隔的任务

NSTimer* _timerView;

}

//定时器的属性对象

@property (retain,nonatomic) NSTimer* timerView;

@end

===========================ViewController.m脚本==============================

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

//属性和成员变量的同步

@synthesize timerView = _timerView;

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

UIButton* btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];

btn.frame = CGRectMake(100, 100, 80, 40);

[btn setTitle:@"启动定时器" forState:UIControlStateNormal];

[btn addTarget:self action:@selector(pressStart) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:btn];

UIButton* btnStop = [UIButton buttonWithType:UIButtonTypeRoundedRect];

btnStop.frame = CGRectMake(100, 200, 80, 40);

[btnStop setTitle:@"停止定时器" forState:UIControlStateNormal];

[btnStop addTarget:self action:@selector(pressStop) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:btnStop];

UIView* view = [[UIView alloc] init];

view.frame = CGRectMake(0, 0, 80, 80);

view.backgroundColor = [UIColor orangeColor];

[self.view addSubview:view];

//通过view的标签值

//通过父亲视图对象以及view的标签值可以获得相应的视图对象

view.tag = 101;

}

//按下开始按钮时调用

-(void)pressStart

{

//NSTimer的类方法创建一个定时器并且启动这个定时器

//P1:每隔多长时间调用定时器函数,以秒为单位

//P2:表示实现定时器函数的对象(指针)

//P3:定时器函数对象

//P4:可以传入定时器函数中一个参数,无参数可以传nil

//P5:定时器是否重复操作 YES:重复 NO:只完成一次函数调用

//返回值为一个新建好的定时器对象

_timerView = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updateTimer:) userInfo:@"小明" repeats:YES];

}

-(void) updateTimer:(NSTimer*) timer

{

NSLog(@"test!!!,name = %@",timer.userInfo);

//最好tag从100开始

UIView* view = [self.view viewWithTag:101];

view.frame = CGRectMake(view.frame.origin.x + 1, view.frame.origin.y + 1, 80, 80);

}

//按下停止按钮时调用

-(void)pressStop

{

if (_timerView != nil) {

//停止定时器

[_timerView invalidate];

}

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end

学习总结:

  • 重点:定时器的创建使用
  • 难点:定时器移动视图

源码链接地址:https://pan.baidu.com/s/1yrOLXZZeu9MiOWtMq5-EGA  密码:7t1l

 

IOS开发之XCode学习010:定时器和视图对象的更多相关文章

  1. IOS开发之XCode学习014:警告对话框和等待提示器

    此文学习来源为:http://study.163.com/course/introduction/1002858003.htm 此工程文件实现功能:  1.警告对话框和等待提示器的概念 2.警告对话框 ...

  2. IOS开发之XCode学习011:UISwitch控件

    此文学习来源为:http://study.163.com/course/introduction/1002858003.htm 此工程文件实现功能:  1.定义UIswitch控件,添加UIswitc ...

  3. IOS开发之XCode学习009:UIViewController使用

    此文学习来源为:http://study.163.com/course/introduction/1002858003.htm 此工程文件实现功能: 通过点击屏幕事件,调用ViewController ...

  4. IOS开发之XCode学习008:UIViewController基础

    此文学习来源为:http://study.163.com/course/introduction/1002858003.htm 红色框选部分用A代替,AppDelegate类在程序框架启动时,如果在i ...

  5. IOS开发之XCode学习007:UIWindow对象

    此文学习来源为:http://study.163.com/course/introduction/1002858003.htm #import "AppDelegate.h" @i ...

  6. IOS开发之XCode学习012:Slider和ProgressView

    此文学习来源为:http://study.163.com/course/introduction/1002858003.htm 此工程文件实现功能:  1.定义UISlider和UIProgressV ...

  7. IOS开发之XCode学习013:步进器和分栏控件

    此文学习来源为:http://study.163.com/course/introduction/1002858003.htm 此工程文件实现功能:  1.定义UIStepper和UISegmente ...

  8. iOS开发之Xcode常用调试技巧总结

    转载自:iOS开发之Xcode常用调试技巧总结 最近在面试,面试过程中问到了一些Xcode常用的调试技巧问题.平常开发过程中用的还挺顺手的,但你要突然让我说,确实一脸懵逼.Debug的技巧很多,比如最 ...

  9. 李洪强iOS开发之Xcode快捷键

    14个Xcode中常用的快捷键操作   在Xcode 6中有许多快捷键的设定可以使得你的编程工作更为高效,对于在代码文件中快速导航.定位Bug以及新增应用特性都是极有效的. 当然,你戳进这篇文章的目的 ...

随机推荐

  1. 应用负载均衡之LVS(二):VS_TUN和VS_DR的arp问题

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  2. 安装kvm模块配置网络

    1. vmware安装centos6.6 64位 (略) 其中有几个注意的地方:a. 内存给2gb. 磁盘给50g, 或者再单独分一个磁盘,用来存储虚拟机文件c. 最关键的一步,在创建虚拟机时,cpu ...

  3. Centos7新功能

    Centos7 单用户模式   centos7里不再有0-6启动级别,而是4个target   graphical.target  多人模式,支持图形和命令行两种登录,对应之前的3,5级别   mul ...

  4. android应用中去android市场去评分的功能实现(吐槽一波个人应用上线...)

    一般的app可能会有这中功能,在应用中去android商店评分来提高排名,前段时间也把我的博客园上传到商店,这里不得不吐槽一些android商店的开放平台. 酷派,vivo,oppo,联想不支持个人开 ...

  5. CodeForces 820C

    题意略. 这道题目的出题者竟然被hack了!? 我的思路是:在游戏开始时,为了尽量少地用字母,我应该尽量选取计算机输出的前a个字母中已经使用过的字母.但是为了使电脑也尽量少用字母,我添加的这b个字母应 ...

  6. ADO.NET通用类库

    using System.Data; using System.Data.SqlClient; namespace DataService { public class SQLHelper { pub ...

  7. 批处理文件:windows下关闭指定端口

    @echo offsetlocal enabledelayedexpansionset /p port=please input port number:for /f "tokens=1-5 ...

  8. Angular4.0用命令行创建组件服务出错

    之前使用cnpm创建的angular4.0项目,由于cnpm下载的node_modules资源经常会有部分缺失,所以在用命令行创建模板.服务的时候会报错: Error: ELOOP: too many ...

  9. 深入java虚拟机学习 -- 类的加载机制(续)

    昨晚写 深入java虚拟机学习 -- 类的加载机制 都到1点半了,由于第二天还要工作,没有将上篇文章中的demo讲解写出来,今天抽时间补上昨晚的例子讲解. 这里我先把昨天的两份代码贴过来,重新看下: ...

  10. CentOS常用命令搜集

    centos是32或者64位:getconf LONG_BIT