为了账号安全,请及时绑定邮箱和手机立即绑定

在Swift中用纯色创建UIImage

在Swift中用纯色创建UIImage

iOS
料青山看我应如是 2019-11-26 14:53:06
我想以编程方式创建由纯色填充的UIImage。有人知道如何在Swift中执行此操作吗?
查看完整描述

3 回答

?
狐的传说

TA贡献1804条经验 获得超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.0


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)

  }

}


查看完整回答
反对 回复 2019-11-26
?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

这是另一个选择。我相信您想要一个确切的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

}


查看完整回答
反对 回复 2019-11-26
?
郎朗坤

TA贡献1921条经验 获得超9个赞

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()


查看完整回答
反对 回复 2019-11-26
  • 3 回答
  • 0 关注
  • 842 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信