记录一次Quartz2D学习(七)

(六)内主要讲述了图片的裁剪

本次主要讲交互

7.交互

  7.1  通过外部刷新内部的显示效果

    初始化的时候设定好初始值,调用setNeedsDisplay方法来重新绘制

- (instancetype)init

{

    self = [super init];

    if (self) {

        self.backgroundColor = [UIColor whiteColor];

    }

    return self;

}

- (instancetype)initWithFrame:(CGRect)frame

{

    self = [super initWithFrame:frame];

    if (self) {

        NSLog(@"initWithFrame");

        self.radius = 1 ;

        self.backgroundColor = [UIColor whiteColor];

    }

    return self;

}

 

-(void)setRadius:(float)radius{

    _radius = radius*100;

    [self setNeedsDisplay];

}

 

- (void)drawRect:(CGRect)rect {

    NSLog(@"drawRect:%f",self.radius);

    CGContextRef  ctx = UIGraphicsGetCurrentContext();

    [[UIColor grayColor] set];

    CGContextAddArc(ctx, 150, 150, self.radius, 0, M_PI*2, 0);

    

    CGContextFillPath(ctx);

}

 

 

 

 

 

 

7.2使用runLoop进行逐帧播放的动画 

 

- (instancetype)initWithFrame:(CGRect)frame

{

    self = [super initWithFrame:frame];

    if (self) {

        self.backgroundColor = [UIColor whiteColor];

        self.img_y=0;

//初始化时间管理器

        CADisplayLink *  displayer =[CADisplayLink displayLinkWithTarget:self selector:@selector(upDateImage)];

//添加时间管理器到runLoop

        [displayer addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];

    }

    return self;

}

-(void)upDateImage{

    [self setNeedsDisplay];

}

- (void)drawRect:(CGRect)rect {

//位移量

    self.img_y +=5;

//防止越界

    if (self.img_y > [UIScreen mainScreen].bounds.size.height) {

        self.img_y = 0;

    }

//可有可无

    CGContextRef  ctx = UIGraphicsGetCurrentContext();

//图片加载

    UIImage * img =[UIImage imageNamed:@"图标-首页"];

//图片绘制到对应点

    [img drawAtPoint:CGPointMake(0, self.img_y)];

}

 

 

 

 

 

 

 

 

posted on 2016-01-20 15:59  坚持才能不懈  阅读(151)  评论(0编辑  收藏  举报

导航