Quartz2d 使用UIkit绘图方法 CADisplayLink 定时器

来源:互联网 发布:知行书院培训学校 编辑:程序博客网 时间:2024/05/17 22:01
- (void)drawRect:(CGRect)rect {    // Drawing code     // 以前一直都要获取上下文,    // UIKit的方法,虽然不用获取上下文,但内部最终都会获取上下文进行绘制        //使用UIkit绘图方法        //画实习    UIRectFill(CGRectMake(10, 10, 100, 100));        //画空心    UIRectFrame(CGRectMake(10, 110, 50, 50));}


-(void)addAnimaion{    //initWithFrame 和 init 调用两次,代表在主运行循环里添加两个定时器        // 写一个定时器,重绘当前的View    // 调用了setNeedsDisplay方法,内部会调用 drawRect方法进行重绘    //[NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(setNeedsDisplay) userInfo:nil repeats:YES];    //[self setNeedsDisplay];        // CADisplayLink 定时器 一秒执行60次    CADisplayLink *link = [CADisplayLink displayLinkWithTarget:self selector:@selector(setNeedsDisplay)];        // 要执行定时器,添加到主运行循环    [link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];        self.link = link;        }-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{    //继承了一个UIResponder对象,就有这个方法    NSLog(@"%s",__func__);    //停止 定时器    //self.link.paused = YES;        [self.link invalidate];    self.link = nil;    // 移除主运行循环,不需要手写,因为invalidate方法,内部会把主定时,从主运行循环移除        //[self.link removeFromRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];}


3 0
原创粉丝点击