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];
}

person Alex Stone    schedule 13.04.2015    source источник


Ответы (1)


Метод называется 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! ...
        })
}
person matt    schedule 13.04.2015