2015-06-19 2 views
0

я реализовал именно то, что описано в этой статье: 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 

ответ

0

Используйте снимок вместо

- (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates; 
+0

Это не работает. После вызова этого метода 'view.size' по-прежнему остается старым значением, и я получил черное изображение. –

0

Попробуйте это,

Изменить

var size = view.bounds.size 

До

var size = view.frame.size 
+0

Не работает. Точно так же, как view.bounds.size, значение view.frame.size всегда {1024, 748} (когда начальная ориентация была пейзаж ...). –

Смежные вопросы