2

я не видел окончательного ответа на этот вопрос еще, много шума вокруг 8 изменений IOS, но я хотел бы адресовать его для прошивкой 9:Обратный вызов при вращении интерфейса ENDED в iOS 9?

Что такое правильный способ получить обратный вызов после изменения ориентации интерфейса ENDS?

Относительно iOS 9, didRotateFromInterfaceOrientation: устарел, и в официальной документации говорится, что мы вместо этого использовали viewWillTransitionToSize:withTransitionCoordinator. Это дает нам (через transitionCoordinator) средство анимации рядом с переходом и блок завершения, но не прямой обратный вызов для истинного «конца» перехода.

Другой способ от transitionCoordinator - notifyWhenInteractionEndsUsingBlock:, но это, как представляется, сообщает о завершении интерактивной части перехода, а не всей вещи.

Итак, является ли «официальным» способом сделать это для реализации animateAlongsideTransition:completion и просто игнорировать вариант анимации?

Я понимаю, что мы все еще можем использовать старые добрые didRotateFromInterfaceOrientation:, но всегда лучше модернизировать там, где это возможно.

ответ

4

Да, вы можете игнорировать параметр анимации, просто используйте для этого «ноль».

Пример от WWDC 2014 'View Controller в Выдвижении прошивки 8':

- (void) viewWillTransitionToSize:(CGSize)s withTransitionCoordinator:(UIVCTC)t 
{ 
    orientation = [self orientationFromTransform: [t targetTransform]]; 
    oldOrientation = [[UIApplication sharedApplication] statusBarOrientation]; 

    [self myWillRotateToInterfaceOrientation:orientation duration:duration]; 

    [t animateAlongsideTransition:^(id <UIVCTCContext>) { 
     [self myWillAnimateRotationToInterfaceOrientation:orientation duration:duration]; 
    } 
    completion: ^(id <UIVCTCContext>) { 
     [self myDidAnimateFromInterfaceOrientation:oldOrientation]; 
    }]; 
} 

Прекрасно работает с прошивкой 9.