UIView超大尺寸快照无法渲染,输出全黑问题求助
问题:大尺寸UIView快照输出全黑,但视图实际包含内容
问题描述
对尺寸为(2384.0, 3370.3333333333335)的UIView进行快照时,输出结果为全黑,但视图内存在大量内容。
快照代码实现
extension UIView { var snapshot: UIImage { let renderer = UIGraphicsImageRenderer(size: bounds.size) let image = renderer.image { _ in drawHierarchy(in: self.bounds, afterScreenUpdates: false) } return image } }
控制台报错信息
2023-04-24 08:09:21.348283+0200 Territories[3442:9511143] [Unknown process name] CGImageCreateMaskFromAlpha: Unsupported bitsPerComponent (16, must be 8) or bitsPerPixel (64, must be 32)
2023-04-24 08:09:21.630013+0200 Territories[3442:9511529] [Metal] 7152 by 10111 iosurface is too large for GPU
视图层级与调用代码
向视图层级中添加两个视图的代码如下:
addSubview(wrapperView) wrapperView.backgroundColor = .orange wrapperView.snp.makeConstraints { maker in maker.leading.top.equalToSuperview() maker.width.equalTo(2384) maker.height.equalTo(3370) } wrapperView.addSubview(mapContainerView) mapContainerView.backgroundColor = .red mapContainerView.snp.makeConstraints { maker in maker.edges.equalToSuperview().inset(20) } let scale = 0.16359492667459377 wrapperView.transform = CGAffineTransform(scaleX: scale, y: scale) wrapperView.snp.updateConstraints { maker in maker.leading.equalTo(-997) maker.top.equalTo(-1360) }
屏幕显示效果
屏幕中正常显示橙色背景的wrapperView,内部包含红色的mapContainerView,视图内容完整可见。
快照调用位置
let document = PDFDocument() let page = PDFPage(image: mainView.wrapperView.snapshot)! document.insert(page, at: document.pageCount)
内容的提问来源于stack exchange,提问作者kunass2
相关产品推荐
相关产品推荐

