CALayer及其子类(一)

CALayer及其子类CAShapeLayer, CATextLayer用来展示图片,文本,富文本,绘图等, 完全可以替代UIImageView,UILabel等常用控件

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    
    //layer展示图片
    CALayer *layerTemp = [CALayer layer];
    layerTemp.frame = CGRectMake(80, 100, 20, 20);
    [self.view.layer addSublayer:layerTemp];
    layerTemp.contents = (id)[UIImage imageNamed:@"common_icon_msg_error"].CGImage;
    
    CALayer *layerTemp2 = [CALayer layer];
    layerTemp2.frame = CGRectMake(80, 150, 60, 64);
    [self.view.layer addSublayer:layerTemp2];
    layerTemp2.contents = (id)[UIImage imageNamed:@"analysis_cup"].CGImage;
    
    //绘图
    CAShapeLayer * shapeLayer = [CAShapeLayer layer];
    CGMutablePathRef path = CGPathCreateMutable();
    CGPathMoveToPoint(path,nil,0.0,0);
    CGPathAddLineToPoint(path,nil,0.0,CGRectGetHeight(self.view.bounds)/2);
    shapeLayer.path = path;
    shapeLayer.bounds = CGRectMake(0,0,5.0,CGRectGetHeight(self.view.bounds)/2);
    shapeLayer.anchorPoint = CGPointMake(0.5, 0.5);
    shapeLayer.position = CGPointMake(CGRectGetMidX(self.view.bounds)+100,CGRectGetMidY(self.view.bounds));
    shapeLayer.lineWidth = 5.0;
    shapeLayer.lineCap = kCALineCapRound;
    shapeLayer.strokeColor = [UIColor colorWithRed:0.153 green:1.000 blue:0.460 alpha:1.000].CGColor;
    [self.view.layer addSublayer:shapeLayer];
    
    //文本展示
    if (/* DISABLES CODE */ (1)) {//富文本
        CATextLayer * textLayer = [CATextLayer layer];
        NSString * text = @"今天天气好晴朗,嘿!处处百花香,嘿嘿嘿!!!明天星期二,后天就是星期三,再有两天就又放假咯!吼吼吼~~~";
        NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:text];
        NSDictionary *attributeDict = @{NSFontAttributeName: [UIFont systemFontOfSize:18.0],
                                        NSForegroundColorAttributeName: [UIColor redColor]};
        NSDictionary *attributeDict1 = @{NSFontAttributeName: [UIFont systemFontOfSize:23.0],
                                         NSForegroundColorAttributeName: [UIColor colorWithRed:0.130 green:0.854 blue:0.345 alpha:1.000]};
        [attrStr setAttributes:attributeDict1 range:NSMakeRange(0, 7)];
        [attrStr setAttributes:attributeDict range:NSMakeRange(7, attrStr.length -7)];
        textLayer.string = attrStr;
        
        //给图层加边框
        textLayer.borderColor = [UIColor colorWithRed:0.193 green:0.607 blue:1.000 alpha:1.000].CGColor;
        textLayer.borderWidth = 0.5;
        
        //图层的大小(宽度固定根据文字定高度)
        CGRect strRect = [attrStr boundingRectWithSize:CGSizeMake(150, MAXFLOAT) options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading) context:nil];
        textLayer.bounds = CGRectMake(0, 0, strRect.size.width, strRect.size.height + 5);//文本大小,默认是0
        textLayer.alignmentMode = @"center";//文字对齐方式
        textLayer.wrapped = YES;//是否折行,默认是no
        textLayer.contentsScale = [UIScreen mainScreen].scale;//清晰度
        textLayer.position = CGPointMake(100,350);//位置
        [self.view.layer addSublayer:textLayer];
        
    } else {//非富文本
        
        CATextLayer * textLayer = [CATextLayer layer];
        NSString * text = @"今天天气好晴朗,嘿!处处百花香,嘿嘿嘿!!!明天星期二,后天就是星期三,再有两天就又放假咯!吼吼吼~~~";
        textLayer.string = text;
        textLayer.alignmentMode = @"center";//文字对齐方式
        
        //字体 (仅限于非富文本才能用)
        UIFont *fontTemp = [UIFont fontWithName:@"Heiti SC" size:18];
        CFStringRef fontName = (__bridge CFStringRef)fontTemp.fontName;
        textLayer.font = CGFontCreateWithFontName(fontName);
        textLayer.fontSize = fontTemp.pointSize;
        
        //图层的大小(宽度固定根据文字定高度)
        CGRect strRect = [text boundingRectWithSize:CGSizeMake(150, MAXFLOAT) options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading) attributes:@{NSFontAttributeName : fontTemp} context:nil];
        textLayer.bounds = CGRectMake(0, 0, strRect.size.width, strRect.size.height + 5);//文本大小,默认是0
        
        //给图层加边框
        textLayer.borderColor = [UIColor colorWithRed:0.193 green:0.607 blue:1.000 alpha:1.000].CGColor;
        textLayer.borderWidth = 0.5;
        
        //字体颜色(仅限于非富文本才能用)
        textLayer.foregroundColor = [UIColor colorWithRed:0.150 green:0.301 blue:0.791 alpha:1.000].CGColor;
        textLayer.wrapped = YES;//是否折行,默认是no
        textLayer.contentsScale = [UIScreen mainScreen].scale;//清晰度
        textLayer.position = CGPointMake(100,350);
        [self.view.layer addSublayer:textLayer];
    }
    
}
CALayer展示图片一

CALayer及其子类(一)_第1张图片
CALayer展示图片二

CALayer及其子类(一)_第2张图片
CATextLayer展示富文本

CALayer及其子类(一)_第3张图片
CATextLayer展示普通文本

CAShapeLayer绘图

你可能感兴趣的:(CALayer及其子类(一))