ImageWithColor 图片 由颜色值生成

作者: 云天大侠_general | 来源:发表于2017-03-14 13:33 被阅读764次

    UIButton设置背景图片时,是需要一张图片才可以。但是我又想直接通过UIColor来设置,那怎么办?

    0x01.Objective C版本

    有个方法是可以将UIColor转化成UIImage对象,可以画出图片,不用让美工MM去设计一张图片,省时间,实际项目还是做成图片的好。

    实际使用中将下面代码贴在.m文件包含头文件下的开头位置处即可。

    @interface UIImage (Color)  
      
    + (UIImage *)imageWithColor:(UIColor *)color size:(CGSize)size;  
      
    @end  
      
    @implementation UIImage (Color)  
      
    + (UIImage *)imageWithColor:(UIColor *)color size:(CGSize)size  
    {  
        CGRect rect = CGRectMake(0, 0, size.width, size.height);  
        UIGraphicsBeginImageContext(rect.size);  
        CGContextRef context = UIGraphicsGetCurrentContext();  
        CGContextSetFillColorWithColor(context,color.CGColor);  
        CGContextFillRect(context, rect);  
        UIImage *img = UIGraphicsGetImageFromCurrentImageContext();  
        UIGraphicsEndImageContext();  
          
        return img;  
    }  
    @end  
    

    使用实例如下:

    self.slider   = [[UISlider alloc] init];
    CGSize size   = CGSizeMake(1.0, 1.0);
    UIImage *image = [UIImage imageWithColor:[UIColor redColor] size:size];
    [self.slider setThumbImage:image forState:UIControlStateNormal];
    

    0x02.swift版本。

    import Foundation
    import UIKit
    
    extension UIImage {
        class func imageWithColor(_ color: UIColor) -> UIImage {
            
            let rect = CGRect(x: 0, y: 0, width: 1.0, height: 1.0)
            UIGraphicsBeginImageContext(rect.size)
            let context = UIGraphicsGetCurrentContext()
            context?.setFillColor(color.cgColor)
            context?.fill(rect)
            let image = UIGraphicsGetImageFromCurrentImageContext()
            UIGraphicsEndImageContext()
            
            return image!
        }
    }
    

    使用方法:

    slider = UISlider()
    slider.setThumbImage(UIImage.imageWithColor(UIColor.red), for: UIControlState())
    

    相关文章

      网友评论

        本文标题: ImageWithColor 图片 由颜色值生成

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