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));
本文介绍如何将UIColor转换为UIImage,提供了Objective-C和Swift两种版本的实现代码。Objective-C版本使用了UIKIT_EXTERN宏定义,而Swift版本则通过扩展UIColor类来实现。文中详细展示了如何创建一个指定大小的图像上下文,设置填充颜色,并获取最终的图像。
1622

被折叠的 条评论
为什么被折叠?



