iOS UILabel 设置渐变颜色字体

深度码农患者IP属地: 四川
0.239字数 44

设置需要UILabel的字体、文本内容与颜色数组后,调用setGradientLabel方法即可显示

GradientLabel.h

    #import <UIKit/UIKit.h>

@interface GradientLabel : UILabel

- (void) setGradientLabelColors: (NSArray *)colors;

@end

GradientLabel.m

    #import "GradientLabel.h"

@interface GradientLabel ()

@property (nonatomic, strong) UILabel *label;

@property (nonatomic, strong) CAGradientLayer *gradientLayer;

@property (nonatomic, strong) NSArray * colors;//颜色数组

@end

@implementation GradientLabel

- (CAGradientLayer *)gradientLayer {
    if (!_gradientLayer) {
        _gradientLayer = [CAGradientLayer layer];
        _gradientLayer.startPoint = CGPointMake(0.0,1.0);
        _gradientLayer.endPoint = CGPointMake(1.0, 1.0);
        _gradientLayer.frame = self.label.frame;
        _gradientLayer.colors = self.colors?:@[[UIColor whiteColor], [UIColor blackColor]];
    }
    return _gradientLayer;
}


- (void) setGradientLabelColors: (NSArray *)colors {
    
    self.colors = colors;
    
    if (self.label == nil) {
        self.label = [[UILabel alloc] init];
        [self addSubview:self.label];
    }
    
    self.label.text = self.text;
    [self.label setFont:self.font?:[UIFont systemFontOfSize:13]];
    [self.label setTextAlignment:self.textAlignment?:NSTextAlignmentLeft];
    
    // 清理text
    self.text = @"";
}

-(void)layoutSubviews {
    [super layoutSubviews];
    
    [self.label setFrame:self.bounds];
    
    // 这里必须重新addSublayer才会更新
    if (self.gradientLayer.sublayers != nil) {
        [self.gradientLayer removeFromSuperlayer];
    }
    [self.layer addSublayer:self.gradientLayer];
    self.gradientLayer.mask = self.label.layer;
}

@end

代码地址:https://github.com/QDeveloper/GCGradientLabel

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
5人点赞
深度码农患者iOS 开发工程师
总资产38共写了3.8W字获得87个赞共40个粉丝

推荐阅读更多精彩内容

  • Swift版本点击这里欢迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh阅读 25,586评论 7 249
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,259评论 4 61
  • 时光流逝飞快,一辈子很短? 有的人,一生只做了一件事。有的人,一辈子忙忙碌碌,做了无数件事。当他站在生命的终端回首...
    不辞而别的秋天阅读 708评论 8 12
  • 文|李不言 依旧没有等来你的早安和晚安。 可是,我好像也并不是那么失望了。 逐渐地明白并且接受, 有些人只适合遇见...
    李多言阅读 235评论 2 2
  • 同住的舍友要给异地恋的男朋友织围巾。她计划着,放假回老家见到男友的第一眼,就把这条围巾缠在他脖子上。围巾最好能织得...
    心姻阅读 615评论 0 2