在Swift中用纯色创建UIImage

我想以编程方式创建由纯色填充的UIImage。有人知道如何在Swift中执行此操作吗?


料青山看我应如是
浏览 845回答 3
3回答

狐的传说

另一个与Swift 2.2兼容的不错的解决方案是以这种方式在UIImage中创建另一个构造函数:public extension UIImage {    public convenience init?(color: UIColor, size: CGSize = CGSize(width: 1, height: 1)) {        let rect = CGRect(origin: .zero, size: size)        UIGraphicsBeginImageContextWithOptions(rect.size, false, 0.0)        color.setFill()        UIRectFill(rect)        let image = UIGraphicsGetImageFromCurrentImageContext()        UIGraphicsEndImageContext()        guard let cgImage = image?.CGImage else { return nil }        self.init(CGImage: cgImage)    }  }这样,您可以通过以下方式创建自定义彩色图像:let redImage = UIImage(color: .redColor())或者,可以选择创建具有自定义尺寸的图像:let redImage200x200 = UIImage(color: .redColor(), size: CGSize(width: 200, height: 200))斯威夫特3.0public extension UIImage {  public convenience init?(color: UIColor, size: CGSize = CGSize(width: 1, height: 1)) {    let rect = CGRect(origin: .zero, size: size)    UIGraphicsBeginImageContextWithOptions(rect.size, false, 0.0)    color.setFill()    UIRectFill(rect)    let image = UIGraphicsGetImageFromCurrentImageContext()    UIGraphicsEndImageContext()    guard let cgImage = image?.cgImage else { return nil }    self.init(cgImage: cgImage)  }}

宝慕林4294392

这是另一个选择。我相信您想要一个确切的UIImage对象。func getImageWithColor(color: UIColor, size: CGSize) -> UIImage {    let rect = CGRectMake(0, 0, size.width, size.height)    UIGraphicsBeginImageContextWithOptions(size, false, 0)    color.setFill()    UIRectFill(rect)    let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()    UIGraphicsEndImageContext()    return image}将其粘贴在您的Swift代码中并调用它Swift 3.1:func getImageWithColor(color: UIColor, size: CGSize) -> UIImage {    let rect = CGRect(x: 0, y: 0, width: size.width, height: size.height)    UIGraphicsBeginImageContextWithOptions(size, false, 0)    color.setFill()    UIRectFill(rect)    let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()!    UIGraphicsEndImageContext()    return image}

郎朗坤

Swift 4版本:extension UIColor {    func image(_ size: CGSize = CGSize(width: 1, height: 1)) -> UIImage {        return UIGraphicsImageRenderer(size: size).image { rendererContext in            self.setFill()            rendererContext.fill(CGRect(origin: .zero, size: size))        }    }}用法:let image0 = UIColor.orange.image(CGSize(width: 128, height: 128))let image1 = UIColor.yellow.image()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

iOS