【发布时间】:2020-03-20 13:48:47
【问题描述】:
我正在使用 Swift 5 和 iOS 13。我正在尝试截取整个滚动视图图像并打印它,但底部显示为白色。我怎么解决这个问题?我在下图中展示并解释了所有内容。
我也查了this topic
我的扩展代码是这样的:
extension UIScrollView {
func screenshot() -> UIImage {
let savedContentOffset = contentOffset
let savedFrame = frame
UIGraphicsBeginImageContextWithOptions(contentSize, false, 0)
contentOffset = .zero
frame = CGRect(x: 0, y: 0, width: contentSize.width, height: contentSize.height)
layer.render(in: UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
contentOffset = savedContentOffset
frame = savedFrame
return image ?? UIImage()
}
}
【问题讨论】:
-
再次检查您链接的主题 - 它回答了如何解决 iOS 13 的问题 - 使用键控存档器克隆滚动视图或将其从父级中删除。为什么会发生 - 我相信是由于自动布局和现有的限制。
-
您使用的是表格视图还是集合视图?它们都是滚动视图的子类。并且它们都旨在不绘制屏幕上不可见的内容。
-
@MaticOblak 是的,我的 scrollView 中有 collectionView。
-
@Mikhail 我看了一下,在 Swift 中找不到答案。你能写出解决方案吗?
标签: ios swift iphone scrollview core-graphics