я реализовал именно то, что описано в этой статье: Send Screenshot of ViewController to other ViewControllerСкриншот предыдущей UIViewController после ориентации изменилась
Но у меня есть вопрос после того, как ориентация изменяется в «ProfileViewController». Я попытался получить снимок экрана «ViewController», но я просто получил изображение представления в предыдущей ориентации.
Я пытался что-то вроде этого, но ничего не появляется, чтобы помочь:
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
coordinator.animateAlongsideTransition(nil, completion: { (context : UIViewControllerTransitionCoordinatorContext!) -> Void in
var viewController = self.navigationController!.viewControllers[0] as! UIViewController
viewController.view.setNeedsDisplay()
viewController.view.setNeedsLayout()
viewController.view.layoutIfNeeded()
self.backgroundImage = viewController.getImageDump()
})
super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)
}
'getImageDump' является метод расширения на UIViewController:
func getImageDump() -> UIImage {
var size = view.bounds.size
UIGraphicsBeginImageContextWithOptions(size, true, 0);
view.layer.renderInContext(UIGraphicsGetCurrentContext())
var image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image
}
EDIT: уже установил ее; просто установите размер диспетчера представлений вручную. Таким образом, вместо
viewController.view.setNeedsDisplay()
viewController.view.setNeedsLayout()
viewController.view.layoutIfNeeded()
вобще
viewController.view.frame.size = size
Это не работает. После вызова этого метода 'view.size' по-прежнему остается старым значением, и я получил черное изображение. –