我有一个自定义 UI 组件,它生成一个圆球的图像,上面叠加了一些标签。
我正在使用UIView
我在 StackOverflow 上找到的以下扩展来拍摄组件的快照。
我正在获取结果UIImage
并在CAEmitterCell
.
我的问题是快照图像是方形的 - 我的圆球在白色背景上。我希望背景在发射时清晰,但我似乎无法找到一种方法来做到这一点。
有什么办法可以修改它UIImage
以使其角落透明?
谢谢。
extension UIView {
/// Create snapshot
///
/// - parameter rect: The `CGRect` of the portion of the view to return. If `nil` (or omitted),
/// return snapshot of the whole view.
///
/// - returns: Returns `UIImage` of the specified portion of the view.
func snapshot(of rect: CGRect? = nil) -> UIImage? {
// snapshot entire view
UIGraphicsBeginImageContextWithOptions(bounds.size, isOpaque, 0)
drawHierarchy(in: bounds, afterScreenUpdates: true)
let wholeImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
// if no `rect` provided, return image of whole view
guard let image = wholeImage, let rect = rect else { return wholeImage }
// otherwise, grab specified `rect` of image
let scale = image.scale
let scaledRect = CGRect(x: rect.origin.x * scale, y: rect.origin.y * scale, width: rect.size.width * scale, height: rect.size.height * scale)
guard let cgImage = image.cgImage?.cropping(to: scaledRect) else { return nil }
return UIImage(cgImage: cgImage, scale: scale, orientation: .up)
}
}