2013-8-9练习[多种方法制作一个计时器]

要求:用多中方法实现定时器

ViewController.h:

#import <UIKit/UIKit.h>
#import "NSThread+test.h"
@interface DXWViewController : UIViewController
- (IBAction)clear:(id)sender;
- (IBAction)click1:(id)sender;
- (IBAction)click2:(id)sender;
- (IBAction)click3:(id)sender;
@property(retain,nonatomic) IBOutlet NSTimer *timer;
@property (retain, nonatomic) IBOutlet UILabel *label;
@property(retain,nonatomic) IBOutlet NSThread *thread;
- (IBAction)click4:(id)sender;

@end

ViewController.m:

#import "DXWViewController.h"
#define START_BUTTON_Tag 1
#define STOP_BUTTON_Tag 2
@interface DXWViewController ()

@end

@implementation DXWViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    _thread = nil;
    //为什么不能初始化的时候给label赋值
    //self.label = 0;//初始化

}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];

}

- (void)dealloc {
    [_thread release];
    [_timer release];
    [_label release];
    [super dealloc];
}

//多线程调用
int i=0;
BOOL flag = TRUE;
-(void)countT
{
    //i=0;
    //self.label.text = [NSString stringWithFormat:@"%i",i];
    while(flag)
    {
        //测试
//        i++;
//        NSLog(@"%d",i);
//        NSString *str = [NSString stringWithFormat:@"%i",i];
//        NSLog(@"%@",str);
//        self.label.text = str;
//        [NSThread sleepForTimeInterval:1];
        i++;
        NSString *str = [NSString stringWithFormat:@"%i",i];
        NSLog(@"%@",str);

        self.label.text = str;

//        CGSize size = [self.label.text sizeWithFont:self.label.font];
//        CGRect frame = CGRectMake(self.label.frame.origin.x,self.label.frame.origin.y, size.width,self.label.frame.size.height);
//        self.label.frame = frame;
        [NSThread sleepForTimeInterval:1];//休眠1秒
    }
}
-(void)write
{
    NSString *str = [NSString stringWithFormat:@"%i",i];
    self.label.text = @"hi";
}
//timer调用的函数
-(void)count:(NSTimer *)_timer
{
    i++;
    NSString *str = [NSString stringWithFormat:@"%i",i];
    self.label.text = str;
    CGSize size = [self.label.text sizeWithFont:self.label.font];
    CGRect frame = CGRectMake(self.label.frame.origin.x,self.label.frame.origin.y, size.width, self.label.frame.size.height);
    NSLog(@"%i",i);
    self.label.frame = frame;
}
-(void)getSysDate:(NSTimer *)_timer
{
    /* //倒计时
    NSCalendar *calendar = [NSCalendar currentCalendar];
    //设置目标时间
    NSDateComponents *components = [[NSDateComponents alloc] init];

    [components setYear:2012];

    [components setMonth:8];

    [components setDay:13];

    [components setHour:12];

    [components setMinute:0];

    [components setSecond:0];

    NSDate *fireDate = [calendar dateFromComponents:components];//目标时间
    //当前时间
    NSDate *today = [NSDate date];

    unsigned int unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;

    NSDateComponents *d = [calendar components:unitFlags fromDate:today toDate:fireDate options:0];//计算时间差

    self.label.text = [NSString stringWithFormat:@"%d天%d小时%d%分%d秒", [d day], [d hour], [d minute], [d second]];//倒计时显示
    */

    NSDate *date=[NSDate date];
    NSDateFormatter *formater=[[[NSDateFormatter alloc] init] autorelease];
    //设置日期格式
    formater.dateFormat=@"yyyy-MM-dd HH:mm:ss";  //HH大写代表24时制  hh代表12小时制
    //把日期变成字符串
    NSString *str=[formater stringFromDate:date];

    //设置时区
    formater.locale=[[[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"] autorelease];
    //把字符串变成日期
    //返回的是格林制时间
    date=[formater dateFromString:@"2013-05-16 13:40:50"];
    NSLog(@"字符串转化成日期是:%@",date);
    NSLog(@"%@",str);
    self.label.text = str;

}

- (IBAction)clear:(id)sender {
    self.label.text = @"0";
    i = 0;
}

- (IBAction)click1:(id)sender {
    UIButton *button = (UIButton *)sender;
//    如果是Start则执行start方法
    //参数:最后一个参数如果是no则代表计时器执行一次
    //_timer = nil;
    if (button.tag == START_BUTTON_Tag)
    {

            if ([_timer isValid]) {

            }
            else{
                _timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(count:) userInfo:nil repeats:YES];
            }

    }
    //执行关闭方法
    else if (button.tag == STOP_BUTTON_Tag)
    {
        if (_timer) {

            if ([_timer isValid]) {
                [_timer invalidate];
            }
        }
        //必须要有这一步操作,不然会报错,指针不用的时候就让他置为空
        _timer = nil;
    }
}

- (IBAction)click2:(id)sender
{
    UIButton *button = (UIButton *)sender;
    if(button.tag == START_BUTTON_Tag)
    {

            //[NSThread sleepForTimeInterval:1];
           // _thread = [[[NSThread alloc] initWithTarget:self selector:@selector(countT) object:nil] autorelease];
            //获取一个单例
            _thread = [NSThread getThread];
            [_thread initWithTarget:self selector:@selector(countT) object:nil];
            [_thread start];
            flag = TRUE;
    }
    else if (button.tag == STOP_BUTTON_Tag)
    {

        if (![_thread isCancelled])
        {
            [_thread cancel];
            flag = FALSE;
        }
        //一旦不用了以后就要指向为空
        _thread = nil;
    }

}

-(void)test
{
    self.label.text = @"1";
}
- (IBAction)click3:(id)sender {
    UIButton *button = (UIButton *)sender;
    if(button.tag == START_BUTTON_Tag)
    {
        if ([_timer isValid]) {

        }
        else{
            _timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(getSysDate:) userInfo:nil repeats:YES];
        }
        //怎么调用外面的方法

    }
    else if(button.tag == STOP_BUTTON_Tag)
    {
        if (_timer) {

            if ([_timer isValid]) {
                [_timer invalidate];
            }
        }
        //必须要有这一步操作,不然会报错,指针不用的时候就让他置为空
        _timer = nil;
        //self.label.text = @"0";
    }
}

- (IBAction)click4:(id)sender {
    UIButton *button = (UIButton *)sender;
    if(button.tag == START_BUTTON_Tag)
    {
        self.label.text = @"hi";
    }
    else if(button.tag == STOP_BUTTON_Tag)
    {
        self.label.text = @"hello";
    }

}
@end

xib:

注意要设置成3.5英寸的

放一个label,几组button,分别一一对应,开始和结束

详细源码:http://download.csdn.net/detail/s10141303/5913117

==================== 迂者 丁小未 CSDN博客专栏=================

MyBlog:http://blog.csdn.net/dingxiaowei2013               MyQQ:1213250243

MyTel:13262983383

====================== 相互学习,共同进步 ===================

时间: 2024-07-29 17:57:39

2013-8-9练习[多种方法制作一个计时器]的相关文章

用jquery的方法制作一个简单的导航栏_jquery

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>学习导航栏的制作</title> <script src="http://code.jquery.com/jquery-1.10.2.js"></script> <script> $(document).ready(function() {

用多种方法制作WEB页面的计数器

One way to do it: Do you like to know how many users visited your site? Creating a Web counter is very easy thing to do using ASP. The only thing you have to do is to use an application server variable called count, this variable will have the value

PS制作一个奇异的星球撞击效果教程

photoshop实例教程,主要为大家介绍在photoshop中使用素材合成的方法制作一个奇妙的太空场景. 先看photoshop教程效果图. 新建文档,背景填充黑色. 建新层,用白色1-4像素画笔点几下,作为星空. 打开素材1 拖入文档中,去色,ctrl+L色阶调整对比度,图层模式滤色,不透明度15%. 分类: PS入门教程

PS入门之如何利用单色填充制作一个靶心

使用单色填充的方法制作一个靶心,属于Photoshop的入门课程,好了,喜欢的朋友可以参考本文! 步骤 1.新建图像文档.选择"文件-新建"命令,在弹出的对话框中设置"预设"为web,在"大小"下拉列表框中选择800X600选项,如图1所示,其与参数保持默认,设置完成后单击"确定"按钮. 2.添加参考线.选择"视图-标尺"命令显示标尺,然后用鼠标从水平和垂直标尺上分别拖曳出出一条参考线放置在图像的中心位置如

Excel中制作一个项目文件目录的两种方法

  Excel中制作一个项目文件目录的两种方法.如下图所示,就是一个项目文件夹内的所有文件: 接下来,先提取文件名称. 如果文件比较少,可以直接输入到Excel文档中,但是如果文件比较多,就要想想办法了. 方法一 在工程文件夹内,新建一个记事本文档,输入下面的内容后保存: DIR *.* /B >目录.TXT 将记事本文档的后缀名.txt 修改为.bat 然后双击这个文件,就会得到一个名为"目录"的记事本文件,里面会包含当前文件夹内的所有文件名. 这样就可以将目录中的文档名复制到

Illustrator制作彩色半调特效图片多种方法详解分享

给各位Illustrator软件的使用者们来详细的解析分享一下制作彩色半调特效图片的多种方法. 方法分享: 我们先来看看最终的效果图吧:   以前创建图片的彩色半调特效是非常耗神费力的活儿:首先要在photoshop里打开图片转成灰度,再应用彩色半调滤镜,然后还要再次在Illustrator里打开文件,最后使用实时描摹.倘若不想在整个过程中搞砸,最好在Illustrator里使用彩色半调效果.本教程实例使用Illustrator CS3,仅仅在Illustrator环境中就可以轻松实现彩色彩色半

link中使用codefirst制作一个软件,如何设计多种权限角色的控制?

问题描述 link中使用codefirst制作一个软件,如何设计多种权限角色的控制? link中使用codefirst制作一个软件,如何设计多种权限角色的控制? 解决方案 http://www.cnblogs.com/ForEvErNoME/p/3624599.html

Flash8制作一个简易的图片电子相册

在这篇教程中我们将利用Flash制作一个简易的电子相册. 效果和源文件: 点击这里下载源文件(解压密码:www.webjx.com) 1.下载本教程中使用的图片,你也可以自己去准备.点击这里下载图片压缩包 2.新建立Flash文档,然后按Ctrl+J修改文档属性: 3.执行"文件">"导入">"导入到库"命令,把所有图片都导入到库里面,之后你可以按Ctrl+L查看库中是否已经有导入的图片了. 4.双击图层1改名为pictures. 5

制作一个掘客,让网站互动起来

掘客(Dig)是Web2.0中的新应用,掘客类网站本质上是一个文章投票评论站点.它结合了书签.博客.RSS以及无等级的评论机制.独特之处在于没有http://www.aliyun.com/zixun/aggregation/10408.html">网站编辑,文章的排列位置由用户来决定.用户可以自己提交文章,由阅读者来判断该文章是否有用,而后为该文章"投票",也就是Dig这篇文章的用户越多就表示文章最值得一看,如果支持率比其它文章高,则该文章就会出现在首页.Digg类网站