2015-04-13 1 views
1

Я работаю с проектом раскадровки, используя классы размера и автозапуск. Тем не менее, в коде есть несколько экземпляров, в которых я добавляю меню и компоненты старой школы на экране. Эти компоненты рисуются правильно, пока просмотр не авторотируется.iOS8, как узнать, когда авторотация UIView завершена?

Я пытаюсь исправить проблемы авторотации для элементов управления, добавленных в UIView программно в iOS8. Как определить, когда авторотация UIView завершена, и представление имеет новые границы?

Существует этот метод, который вызывается до завершения вращения, и просмотр по-прежнему имеет старый размер, а подпрограммы не могут правильно перерисовываться. Я не вижу ничего вдоль линий didTransition

-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator 
{ 

//this does not seem to work - uses old size instead of new one 
    [introductionView setNeedsDisplay]; 

    [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; 
} 

ответ

3

Метод называется viewWillTransitionToSize:withTransitionCoordinator:. Второй параметр - координатор перехода! Он сообщает вам, когда вращение закончено.

Вот типичная структура из моего собственного кода (в Swift, но я уверен, что вы можете перевести мысленно):

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) { 
    super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator) 
    coordinator.animateAlongsideTransition({ 
      _ in 
      // ... 
     }, completion: { 
      _ in 
      // ... now the transition is over! ... 
     }) 
}