
Objective-c 版本
UIKIT_EXTERN UIImage * __nullable UIColorAsImage(UIColor * __nonnull color, CGSize size) {
CGRect rect = CGRectMake(0, 0, size.width, size.height);
UIGraphicsBeginImageContextWithOptions(rect.size, NO, [UIScreen mainScreen].scale);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context,color.CGColor);
CGContextFillRect(context, rect);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
使用
// 复制上面代码放在任意头文件中,并引用该头文件,在需要的地方调用如下
UIImage *image = UIColorAsImage([UIColor redColor], CGSizeMake(200, 100));
Swift 版本
extension UIColor {
func asImage(_ size: CGSize) -> UIImage? {
var resultImage: UIImage? = nil
let rect = CGRect(x: 0, y: 0, width: size.width, height: size.height)
UIGraphicsBeginImageContextWithOptions(rect.size, false, UIScreen.main.scale)
guard let context = UIGraphicsGetCurrentContext() else {
return resultImage
}
context.setFillColor(self.cgColor)
context.fill(rect)
resultImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return resultImage
}
}
使用
let colorImage = UIColor.black.asImage(CGSize(width: 100, height: 100));