视图背景颜色渐变

  • 使用layer方式实现

//初始化视图
    self.comfirmButton.frame = CGRectMake(139, 0, self.width - 139, self.height);
    //初始化CAGradientlayer对象,使它的大小为对象的大小
    CAGradientLayer *layer = [CAGradientLayer layer];
    layer.frame = self.comfirmButton.bounds;
    //将layer对象添加到视图
    [self.comfirmButton.layer addSublayer:layer];
    //渐变区域的起始点
    layer.startPoint = CGPointMake(0, 0);
    //渐变区域的终点
    layer.endPoint = CGPointMake(1, 0);
    //颜色数组
    layer.colors = @[(__bridge id)[UIColor colorWithHexString:@"FF7171"].CGColor,(__bridge id)[UIColor colorWithHexString:@"FF71A1"].CGColor];
    //设置颜色的分割点
    layer.locations = @[@(0.5f),@(1.0f)];




  • 使用上下文的方式实现

    • .h中的方法
    • 类目
    
    typedef enum  {
        topToBottom = 0,//从上到小
        leftToRight = 1,//从左到右
        upleftTolowRight = 2,//左上到右下
        uprightTolowLeft = 3,//右上到左下
    }GradientType;
    
      ```
      + (UIButton *)changeButtonTitleAndImagePointWith:(UIButton *)button
      ```
    

外部方法

+ (UIButton *)changeButtonTitleAndImagePointWith:(UIButton *)button
{
    CGFloat imageW = button.imageView.frame.size.width;
    CGFloat imageH = button.imageView.frame.size.height;
    
    CGFloat titleW = button.titleLabel.frame.size.width;
    CGFloat titleH = button.titleLabel.frame.size.height;
    
    //图片上文字下
    [button setTitleEdgeInsets:UIEdgeInsetsMake(0, -imageW, imageH + 10, 0.f)];
    [button setImageEdgeInsets:UIEdgeInsetsMake(titleH, 0.f, 0.f,-titleW)];
    
    return button;
}


私有方法

+ (UIButton *)changeColorArray:(NSMutableArray*)colorArray ByGradientType:(GradientType)gradientType button:(UIButton *)button
{
    UIImage *backImage = [button buttonImageFromColors:colorArray ByGradientType:gradientType button:button];
    [button setBackgroundImage:backImage forState:UIControlStateNormal];
    return button;
}
- (UIImage*) buttonImageFromColors:(NSArray*)colors ByGradientType:(GradientType)gradientType button:(UIButton *)button{
    NSMutableArray *ar = [NSMutableArray array];
    for(UIColor *c in colors) {
        [ar addObject:(id)c.CGColor];
    }
    UIGraphicsBeginImageContextWithOptions(button.frame.size, YES, 1);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSaveGState(context);
    CGColorSpaceRef colorSpace = CGColorGetColorSpace([[colors lastObject] CGColor]);
    CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (CFArrayRef)ar, NULL);
    CGPoint start;
    CGPoint end;
    
    switch (gradientType) {
        case 0:////从上到小
            start = CGPointMake(0.0, 0.0);
            end = CGPointMake(0.0, button.frame.size.height);
            break;
        case 1:////从左到右
            start = CGPointMake(0.0, 0.0);
            end = CGPointMake(button.frame.size.width, 0.0);
            break;
        case 2:////左上到右下
            start = CGPointMake(0.0, 0.0);
            end = CGPointMake(button.frame.size.width, button.frame.size.height);
            break;
        case 3: ////右上到左下
            start = CGPointMake(button.frame.size.width, 0.0);
            end = CGPointMake(0.0, button.frame.size.height);
            break;
        default:
            break;
    }
    CGContextDrawLinearGradient(context, gradient, start, end, kCGGradientDrawsBeforeStartLocation | kCGGradientDrawsAfterEndLocation);
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    CGGradientRelease(gradient);
    CGContextRestoreGState(context);
    CGColorSpaceRelease(colorSpace);
    UIGraphicsEndImageContext();
    return image;
}

csdn地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,016评论 4 62
  • 各位童鞋们, UIButton是iOS中常用的控件,下面来详细介绍它的使用方法和以及开发中需要注意的问题. UIB...
    我与太阳肩并肩阅读 1,264评论 2 17
  • 转载自:https://github.com/Tim9Liu9/TimLiu-iOS 目录 UI下拉刷新模糊效果A...
    袁俊亮技术博客阅读 11,904评论 9 105
  • 我觉得大自然存在着一种规律,它诞生的任何事物都有它存在的道理。在遵循存在的道理的基础上,其发展也存在必然。 就像每...
    喵酱_me阅读 505评论 4 7
  • 文:木易书 残冬腊日煮佛粥, 千家走,不须求。 稚子结群,遥看一梅羞。 笑语欢颜何是愁, 寒夜梦,淡香留。 往昔远...
    木易书阅读 477评论 7 9