Я хочу создать скриншот UIScrollView
, который должен содержать весь контент прокрутки, даже тот контент, который в настоящее время не отображается пользователю. Для этого я попытался следующие два метода:Как сделать снимок экрана всего содержимого Scrollview?
func snapShot(view:UIView) -> UIImage {
UIGraphicsBeginImageContextWithOptions(view.bounds.size, true, 0);
view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true);
let image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
func snapShotScrollView(scrollView:UIScrollView) -> UIImage {
let bounds = scrollView.bounds;
scrollView.bounds.size = scrollView.contentSize;
let image = snapShot(scrollView);
scrollView.bounds = bounds;
return image;
}
Но полученное изображение еще раз показывает те просматривать элементы внутри зрения прокрутки, которые в настоящее время видны пользователю. Но я хочу видеть все взгляды.
Как я могу это сделать?
EDIT
Я также попытался:
func snapshot() -> UIImage? {
var image: UIImage?
UIGraphicsBeginImageContext(scrollView.contentSize)
let savedContentOffset = scrollView.contentOffset
let savedFrame = scrollView.frame;
scrollView.contentOffset = CGPoint.zero;
scrollView.frame = CGRect(x: 0, y: 0, width: scrollView.contentSize.width, height: scrollView.contentSize.height);
scrollView.layer.render(in: UIGraphicsGetCurrentContext()!)
image = UIGraphicsGetImageFromCurrentImageContext();
scrollView.contentOffset = savedContentOffset;
scrollView.frame = savedFrame;
UIGraphicsEndImageContext();
return image
}
Edit 2
Мой UIScrollView
находится внутри UIView
и не содержат UIStackView
. Представление спроектировано как всплывающее представление, так что он выглядит как диалог появляется. Образец кода из моего первого редактирования работает в пробе UIViewController
только с одним UIScrollView
, но не в упомянутом созвездии.
Я не думаю, что это легко, так как 'scrollView' просто рисует то, что ему нужно, и на самом деле не подходит для этого случая. – Alistra
Возможно, полезно: http://stackoverflow.com/questions/3539717/getting-a-screenshot-of-a-uiscrollview-including-offscreen-parts – shallowThought