我有以下代码,我一直用它来生成UIViews的截图。以下是有关何时起作用以及何时不起作用的一些细节:
工作时:
1)UIView完全用Swift构建(即,不是在Interface Builder中构建)
2)UIView的Superview是另一个UIView
如果不起作用:
1)UIView是在Interface Builder
中构建的2)UIView的Superview是UIScrollView
3)我知道我正在返回图像并成功添加回superview,因为我打印每个返回的图像,并在调用函数并打印图像和子视图匹配后打印superview的子视图。
我试过在viewDidLoad和viewDidLayoutSubviews中调用该函数。在任何一种情况下,它都是加载视图时调用的最后一个函数。
func pictureTaker(_ rawView: UIView) -> UIImageView {
UIGraphicsBeginImageContextWithOptions(rawView.bounds.size, false, 0)
rawView.drawHierarchy(in: rawView.bounds, afterScreenUpdates: true)
let screenshot = UIGraphicsGetImageFromCurrentImageContext();
let viewImage = UIImageView(image: screenshot)
UIGraphicsEndImageContext();
viewImage.frame = rawView.frame
return viewImage
}