美文网首页程序员iOS DeveloperiOS开发实用技术
【code_小马】Layer用来显示文字

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

作者: 曾经像素有点低 | 来源:发表于2017-03-12 17:40 被阅读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班的一名学生而已!”  阿瞳从书包里掏出学生证递到如风面前。  如风看着证件上那张灿烂的笑脸微微一愣,他收起枪说:“对不起,你们随意玩吧。”  如风走了出去。  胖妹咽下口中的食物,使劲拍着胸口说:“他,他刚才拿的是枪吧?啊?是真的枪吧?”  阿瞳的腿微微发颤,她举起“小红莓之恋”一饮而尽,自言自语:“他们比我想的还要复杂啊……”  如风一出门便迎来了程秀秀。  “怎么,还是放弃你‘姐姐’了吗?!”程秀秀冷笑着说,“那两个女孩,比较喜欢哪一个呢?”  “最近不太平,有人在暗暗动手脚,”如风说,“她们跟她接触,我怕她出事。”  程秀秀松了口气,又酸酸的说:“就那么在乎她吗?”   如风没有回答,他顿了顿说:“秀秀,算了吧。”  “我不!”程秀秀望着如风的背影狠狠的甩头而去。  “夏同学!”在图书馆,一个文质彬彬的男孩笑着喊我。  “什么事?”我望着这张陌生而英俊的脸有些紧张的说。  已经很久很久,除了如风,没有人跟我说过话了。  他拿过我手里借的书,说:“肖伯纳?你也喜欢戏剧吗?”  “还好。”他自然的态度仿佛我们是故交,这让我略略放松。.........

    点击阅读文章第十二集

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

    相关文章

      网友评论

        本文标题:【code_小马】Layer用来显示文字

        本文链接:https://www.haomeiwen.com/subject/mjfxnttx.html