xcode 如何渲染子视图图层有`compositingFilter`的UIView

wfypjpf4  于 2023-04-07  发布在  其他
关注(0)|答案(1)|浏览(143)

我想将一个UIView渲染成一个UIImage,但是该UIView的一些子视图已经使用layer.compositingFilter设置了混合模式,这些视图将在没有混合模式的情况下渲染,例如:

view.layer.compositingFilter = "multiplyBlendMode"

根据Apple的documentation
此方法的OS X v10.5实现不支持整个Core Animation合成模型。不渲染QCCompositionLayer、CAOpenGLayer和QTMovieLayer层。此外,不渲染使用3D变换的层,也不渲染指定backgroundFilters、滤镜、compositingFilter或掩码值的层。macOS的未来版本可能会添加对渲染这些层和属性的支持。
我的渲染代码:

let format = UIGraphicsImageRendererFormat.default()
format.scale = 1.0
let image = UIGraphicsImageRenderer(size: self.bounds.size, format: format).image { context in
    self.layer.render(in: context.cgContext)
}

如何使用混合模式(如多重混合模式)渲染视图?

oiopk7p5

oiopk7p51#

您可以使用drawHierarchy

UIGraphicsImageRenderer(bounds: bounds).image { context in
    drawHierarchy(in: bounds, afterScreenUpdates: true)
}

相关问题