我正在创建一个
CGImage
。func otf() -> CGImage {
这是一个在渐变上的贝塞尔蒙版。因此,
// the path
let p = UIBezierPath()
p.moveTo etc
// the mask
let m = CAShapeLayer()
set size etc
m.path = p.cgPath
// the layer
let l = CAGradientLayer()
set colors etc
l.mask = m
已经完成了。然后像往常一样以UIImage
的方式呈现...
UIGraphicsBeginImageContextWithOptions(sz.size, false, UIScreen.main.scale)
l.render(in: UIGraphicsGetCurrentContext()!)
let r = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
但是,如果要将其返回,当然需要转换为CGImage。
return r.cgImage!
如果你使用类似于..
的东西,情况也是如此。UIGraphicsImageRenderer(bounds: b).image { (c) in v.layer.render(in: c) }
您获得的是UIImage,而不是CGImage。
似乎应该有更好/更优雅的方式-是否有一种更直接地“构建CGImage”的方法,而不是“构建UIImage,然后转换”?