2

我還沒有看到一個明確的回答這個問題的是,很多周圍的iOS 8的變化的噪音,但我想,以解決它的iOS 9:iOS 9界面旋轉ENDED時的回調?

什麼是正確的方式來獲得一個回調界面方向改變後ENDS?

從iOS 9開始,didRotateFromInterfaceOrientation:已被棄用,官方文檔告訴我們使用viewWillTransitionToSize:withTransitionCoordinator來代替。這爲我們(通過transitionCoordinator)提供了一個在轉換旁邊進行動畫製作的方法,以及一個完成塊,但不能直接回調轉換的真正「結束」。

transitionCoordinator的另一種方法是notifyWhenInteractionEndsUsingBlock:,但這似乎報告過渡的交互部分的結束,而不是整個事情。

那麼,是「官方」的方式來做到這一點,以實現animateAlongsideTransition:completion,並簡單地忽略動畫選項?

我意識到我們仍然可以使用好舊的didRotateFromInterfaceOrientation:,但在可能的情況下現代化總是會更好。

回答

4

是的,你可以忽略動畫選項,只需使用'nil'即可。

實施例從WWDC 2014 ' - 視圖 - 控制器的進步在IOS 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]; 
    }]; 
} 

工作正常與iOS 9.