标签:calayer
// 通过CALayer的代理方法进行绘图,可用于社交app的头像应用 // CALayerGraphicsViewController.m // CALayerGraphics // // Created by xiaoyao on 15/3/6. // Copyright (c) 2015年 lijien. All rights reserved. // #import "CALayerGraphicsViewController.h" #define PHOTO_HEIGHT 150 @interface CALayerGraphicsViewController () @end @implementation CALayerGraphicsViewController - (void)viewDidLoad { [super viewDidLoad]; [self myCalyerGraphics]; } - (void)myCalyerGraphics { CALayer *layer = [[CALayer alloc] init]; layer.bounds = CGRectMake(0, 0, PHOTO_HEIGHT, PHOTO_HEIGHT); layer.position = CGPointMake(160, 200); layer.backgroundColor = [UIColor redColor].CGColor; layer.cornerRadius = PHOTO_HEIGHT / 2; layer.borderColor = [UIColor whiteColor].CGColor; layer.borderWidth = 2; layer.masksToBounds = YES; layer.delegate = self; [self.view.layer addSublayer:layer]; // 必须调用,否则图层上绘制的内容无法显示,并且图层的代理方法也不会调用 [layer setNeedsDisplay]; } #pragma mark - calayerDlelegte - (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx { CGContextSaveGState(ctx); CGContextScaleCTM(ctx, 1, -1); CGContextTranslateCTM(ctx, 0, -PHOTO_HEIGHT); UIImage *image = [UIImage imageNamed:@"photo.png"]; CGContextDrawImage(ctx, CGRectMake(0, 0, PHOTO_HEIGHT, PHOTO_HEIGHT), image.CGImage); CGContextRestoreGState(ctx); } - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; CALayer *calayer = self.view.layer.sublayers[0]; CGFloat width = calayer.bounds.size.width; if (width == PHOTO_HEIGHT) { width = PHOTO_HEIGHT * 2; } else { width = PHOTO_HEIGHT; } calayer.bounds = CGRectMake(0, 0, width, width); calayer.position = [touch locationInView:self.view]; calayer.cornerRadius = width / 2; } @end
标签:calayer
原文地址:http://blog.csdn.net/u010606986/article/details/44100533