欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

iOS开发从入门到精通--定时器UITimer和视图对象移动

程序员文章站 2022-07-01 08:32:19
定时器UITimer和视图对象移动 在ViewController.h #import @interface ViewController : UIViewCont...

定时器UITimer和视图对象移动
在ViewController.h

#import 

@interface ViewController : UIViewController{
    //定义一个定时器对象
    //可以在每隔固定的时间发送一个消息
    //通过消息来调用相应的事件函数
    //通过此函数可在固定时间段来完成一个根据时间间隔的任务

    NSTimer * _timeView;
}

//定时器的属性对象
@property(retain,nonatomic) NSTimer * timeView;


@end

在ViewController.m

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
//属性和成员变量的同步
@synthesize timeView =_timeView;

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    //启动定时器按钮
    UIButton * btn =[UIButton buttonWithType:UIButtonTypeRoundedRect];
    //目前我们使用UIButtonTypeRoundedRect设置圆角已经不可以了,需要加上下面2句设置四周的圆角
    [btn.layer setMasksToBounds:YES];
    [btn.layer setCornerRadius:10.0];//设置矩形四个圆角半径
    btn.frame=CGRectMake(100, 100, 100, 40);
    [btn setTitle:@"定时器按钮" forState:UIControlStateNormal];
    btn.backgroundColor=[UIColor greenColor];
    [btn addTarget:self action:@selector(pressStart) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn];

    //停止定时器按钮
    UIButton * btnStop =[UIButton buttonWithType:UIButtonTypeRoundedRect];
    //目前我们使用UIButtonTypeRoundedRect设置圆角已经不可以了,需要加上下面2句设置四周的圆角
    [btnStop.layer setMasksToBounds:YES];
    [btnStop.layer setCornerRadius:10.0];//设置矩形四个圆角半径
    btnStop.frame=CGRectMake(100, 200, 100, 40);
    [btnStop setTitle:@"停止定时器" forState:UIControlStateNormal];
    btnStop.backgroundColor=[UIColor redColor];
    [btnStop addTarget:self action:@selector(pressStop) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btnStop];

    //创建一个view视图
    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{
    //NSTime的类方法创建一个定时器并且启动这个定时器
    //p1:每个多长时间调用定时器函数,以秒为单位
    //p2:表示实现这个定时器函数的对象
    //p3:定时器函数对象
    //p4:可以传入定时器函数中一个参数,无参数传入nil
    //p5:定时器是否重复操作YES表示重复,NO表示只完成一次函数调用

//  _timeView =  [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateTime) userInfo:nil repeats:YES];

    _timeView = [NSTimer scheduledTimerWithTimeInterval:0.03 target:self selector:@selector(updateTime:) userInfo:@"苹果" repeats:YES];
}


//定时器函数
//- (void) updateTime{
//    NSLog(@"test11");
//}

//将定时器本身作为参数传入
- (void) updateTime:(NSTimer* )timer{

    NSLog(@"test11  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(_timeView!=nil){
        [_timeView invalidate];
    }

}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end