CALayer绘图

来源:互联网 发布:比较好的c语言论坛 编辑:程序博客网 时间:2024/05/20 14:39
// 通过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

0 0
原创粉丝点击