我到处查找,但找不到实现这个的方法。我需要创建一个指定宽度和高度的黑色UIImage(宽度和高度会更改,所以我不能只创建一个黑色方框然后将其加载到UIImage中)。是否有一种方法可以创建CGRect然后将其转换为UIImage?或者是否还有其他方法可以创建一个简单的黑色框?
我到处查找,但找不到实现这个的方法。我需要创建一个指定宽度和高度的黑色UIImage(宽度和高度会更改,所以我不能只创建一个黑色方框然后将其加载到UIImage中)。是否有一种方法可以创建CGRect然后将其转换为UIImage?或者是否还有其他方法可以创建一个简单的黑色框?
CGSize imageSize = CGSizeMake(64, 64);
UIColor *fillColor = [UIColor blackColor];
UIGraphicsBeginImageContextWithOptions(imageSize, YES, 0);
CGContextRef context = UIGraphicsGetCurrentContext();
[fillColor setFill];
CGContextFillRect(context, CGRectMake(0, 0, imageSize.width, imageSize.height));
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
let imageSize = CGSize(width: 420, height: 120)
let color: UIColor = .black
UIGraphicsBeginImageContextWithOptions(imageSize, true, 0)
let context = UIGraphicsGetCurrentContext()!
color.setFill()
context.fill(CGRect(x: 0, y: 0, width: imageSize.width, height: imageSize.height))
let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
UIGraphicsBeginImageContextWithOptions(CGSizeMake(w,h), NO, 0);
UIBezierPath* p =
[UIBezierPath bezierPathWithRect:CGRectMake(0,0,w,h)];
[[UIColor blackColor] setFill];
[p fill];
UIImage* im = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
im
是图片。opaque
设置为YES,我认为您甚至不需要绘制黑色填充的矩形! :) 不透明的图形上下文是黑色的。 - mattSwift 3:
func uiImage(from color:UIColor?, size:CGSize) -> UIImage? {
UIGraphicsBeginImageContextWithOptions(size, true, 0)
defer {
UIGraphicsEndImageContext()
}
let context = UIGraphicsGetCurrentContext()
color?.setFill()
context?.fill(CGRect.init(x: 0, y: 0, width: size.width, height: size.height))
return UIGraphicsGetImageFromCurrentImageContext()
}
像这样
let image = UIGraphicsImageRenderer(size: bounds.size).image { _ in
UIColor.black.setFill()
UIRectFill(bounds)
}
正如WWDC视频中所引用的:
还有一个更旧的功能,叫做UIGraphicsBeginImageContext。但是请不要使用它。
let frame = CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: 1920, height: 1080))
let cgImage = CIContext().createCGImage(CIImage(color: .black()), from: frame)!
let uiImage = UIImage(cgImage: cgImage)
CGRect
创建一个UIView
,将backgroundColor
设置为[UIColor blackColor]
,然后将这个新的UIView
添加到你现有的视图中(例如从控制器中的self.view
),使用addSubview
。 - Rob