程序员iOS DeveloperiOS开发实用技术

【code_小马】Layer用来显示文字

2017-03-12  本文已影响3859人  曾经像素有点低
渐变色神马的 2017-03-12 下午3.11.53.png

图片中:
第一个是用CATextLayer实现的;
第二个是用UILabel和CAGradientLayer实现的文字的渐变色;
第三个是用CAGradientLayer实现的;

CALayer篇:

用的是文章CAGradientLayer绘制渐变色中技术,但是这次的目的主要讲一下CATextLayer,以及CALayer的mask这个属性;


//CATextLayer 显示文字
-(void)ygCATextLayer
{
    CATextLayer * ygTextLayer = [CATextLayer layer];
    ygTextLayer.frame           = CGRectMake(20, 64+100, 300, 35);
    ygTextLayer.backgroundColor = [UIColor yellowColor].CGColor;
    ygTextLayer.string = @"【code_小马】的CATextLayer";
    //字体的名字
    ygTextLayer.font = (__bridge CFTypeRef _Nullable)(@"HiraKakuProN-W3");
    //字体的大小
    ygTextLayer.fontSize = 18.f;
    //字体的对齐方式
    ygTextLayer.alignmentMode = kCAAlignmentCenter;
    //字体的颜色
    [self.view.layer addSublayer:ygTextLayer];
    ygTextLayer.foregroundColor =
    [UIColor redColor].CGColor;
// 最主要的特点是CATextLayer可以被NSMutableAttributedString直接附值。
//而NSMutableAttributedString有可以最自己内容作出颜色以及大小的调整。
    

}


//渐变色文字
-(void)ygCAGradientLayer
{
    
    UILabel * yg_label = [[UILabel alloc]init];
    yg_label.frame = CGRectMake(20, 160, 300, 30);
    yg_label.text = @"【code_小马】的CAGradientLayer";
    yg_label.font = [UIFont systemFontOfSize:18.0];
    [self.view addSubview:yg_label];
    
    CAGradientLayer *yg_gradientLayer = [CAGradientLayer layer];
    NSInteger count = 20;
    NSMutableArray *colors = [NSMutableArray array];
    NSMutableArray *locations = [NSMutableArray array];
    for (NSInteger i = 0; i < count ; i ++) {
        UIColor *color = [UIColor colorWithRed:arc4random_uniform(255)/255.0 green:arc4random_uniform(255)/255.0 blue:arc4random_uniform(255)/255.0 alpha:1];
        [colors addObject:(__bridge id)color.CGColor];
    
        [locations addObject:@(i /(CGFloat)count)];
    }
    //颜色数组
    yg_gradientLayer.colors = colors;
    //可以不设置
    yg_gradientLayer.locations = locations;
    //startPoint endPoint 确定条纹方向 不设置 默认水平默认值[.5,0]和[.5,1]
    yg_gradientLayer.startPoint = CGPointMake(0, 0);
    yg_gradientLayer.endPoint = CGPointMake(1, 1);
    
    yg_gradientLayer.type = kCAGradientLayerAxial;
    
    yg_gradientLayer.bounds = CGRectMake(0, 0, 400, 400);
    yg_gradientLayer.position = CGPointMake(200, 340);
    
    //用label的layer裁剪gradientLayer
    yg_gradientLayer.mask = yg_label.layer;
    [self.view.layer addSublayer:yg_gradientLayer];
    
}

//渐变色的线
-(void)ygLineLayer
{
    
    CAGradientLayer *yg_gradientLayer = [CAGradientLayer layer];
    NSInteger count = 20;
    NSMutableArray *colors = [NSMutableArray array];
    NSMutableArray *locations = [NSMutableArray array];
    for (NSInteger i = 0; i < count ; i ++) {
        UIColor *color = [UIColor colorWithRed:arc4random_uniform(255)/255.0 green:arc4random_uniform(255)/255.0 blue:arc4random_uniform(255)/255.0 alpha:1];
        [colors addObject:(__bridge id)color.CGColor];
        
        [locations addObject:@(i /(CGFloat)count)];
    }
    //颜色数组
    yg_gradientLayer.colors = colors;
    //可以不设置
    yg_gradientLayer.locations = locations;
    //startPoint endPoint 确定条纹方向 不设置 默认水平默认值[.5,0]和[.5,1]
    yg_gradientLayer.startPoint = CGPointMake(0, 0);
    yg_gradientLayer.endPoint = CGPointMake(1, 1);
    
    //这一句是废话——>因为:type默认值是kCAGradientLayerAxial,表示按像素均匀变化。除了默认值也无其它选项。
    yg_gradientLayer.type = kCAGradientLayerAxial;
    
    yg_gradientLayer.frame = CGRectMake(0, 360, [UIScreen mainScreen].bounds.size.width , 50);
    
    [self.view.layer addSublayer:yg_gradientLayer];
    
}


/*
 *  Layer.mask属性用法
 *  mask (继承与CALayer)
 */ 

//用label的layer裁剪gradientLayer
   yg_gradientLayer.mask = yg_label.layer;

    [greenLayer addSublayer: whiteLayer];
    [greenLayer addSublayer: blueLayer];
    [greenLayer addSubLayer: purpleLayer]

    greenLayer.mask = purpleLayer;
原图
    [greenLayer addSublayer: whiteLayer];
    [greenLayer addSublayer: blueLayer];

添加一个紫色的Layer.png
 [greenLayer addSubLayer: purpleLayer]

用紫色的Layer 裁剪绿Layer
  greenLayer.mask = purpleLayer;

【code_小马】

我们是工程师 ——加油 !

美文分享

晌午时光

【第十三集】

不就带了两个马子嘛!干吗那么紧张!”滨仔不屑地说。  “你少罗嗦!”Linda匆忙跑远。  “这就是传说中的东歌啊!哇塞!我没想到真的能进来!阿瞳!你看耶!那人穿了三个鼻环!”胖妹兴奋得大呼小叫的,未显示出太多的诧异,她观察着人们对如风恭敬的态度,心中默默盘算。  “我还要一份翅皇羹!”胖妹拿着menu,她已经点了很多。  “‘小红莓之恋’,一份乳酪蛋糕,谢谢。”阿瞳对侍者说“小红莓之恋’,拿破仑饼。”如风目光一直放在阿瞳身上。  阿瞳微微一笑:“看不出来,你竟然喜欢吃甜食!”  如风不自然的低下头,他点了一支烟,把烟盒摆在了左边,与打火机形成了个十字。  阿瞳瞥了一眼,喝了口饮料。  “夏如画是你女友吗?”胖妹一边大吃一边说,“她好靓啊!”  “不是,”如风面色一变,他长吐了一口烟圈,有些落寞的说:“她是我姐姐。”  “哇!是姐姐,你们长得不像啊。不过都是俊男靓女!”胖妹说。  如风脸色更加难看。  “不是吧。”阿瞳突然开口。  她盯着如风的眼睛说:“你们不是亲姐弟吧。”  胖妹惊讶的望着阿瞳,阿瞳脸上浮现出狡黠的笑容。  如风目光中露出一丝寒气,他突然拔出枪抵住阿瞳的额头。  “说,你是到底是谁!”  胖女孩塞满食物的嘴大大的张开,她不可思议的望着如风,没敢叫出声音。  阿瞳脸色苍白,她深吸了一口气说:)“你不用一再的试探我了。我不知道你把我当成了什么人,但我绝对不是他们中的一员!我,苏瞳,只是惠仁中学2年3班的一名学生而已!”  阿瞳从书包里掏出学生证递到如风面前。  如风看着证件上那张灿烂的笑脸微微一愣,他收起枪说:“对不起,你们随意玩吧。”  如风走了出去。  胖妹咽下口中的食物,使劲拍着胸口说:“他,他刚才拿的是枪吧?啊?是真的枪吧?”  阿瞳的腿微微发颤,她举起“小红莓之恋”一饮而尽,自言自语:“他们比我想的还要复杂啊……”  如风一出门便迎来了程秀秀。  “怎么,还是放弃你‘姐姐’了吗?!”程秀秀冷笑着说,“那两个女孩,比较喜欢哪一个呢?”  “最近不太平,有人在暗暗动手脚,”如风说,“她们跟她接触,我怕她出事。”  程秀秀松了口气,又酸酸的说:“就那么在乎她吗?”   如风没有回答,他顿了顿说:“秀秀,算了吧。”  “我不!”程秀秀望着如风的背影狠狠的甩头而去。  “夏同学!”在图书馆,一个文质彬彬的男孩笑着喊我。  “什么事?”我望着这张陌生而英俊的脸有些紧张的说。  已经很久很久,除了如风,没有人跟我说过话了。  他拿过我手里借的书,说:“肖伯纳?你也喜欢戏剧吗?”  “还好。”他自然的态度仿佛我们是故交,这让我略略放松。.........

点击阅读文章第十二集

点击阅读文章第十四集
文章后续更新中,喜欢请关注哦 🌹🌹🌹

上一篇下一篇

猜你喜欢

热点阅读