我正在嘗試更新iOS 6的應用程序,主要挑戰在於處理自轉。有與這個主題相關的問題和搜索結果,但沒有直接回答我的問題。我理解的shouldAutorotateToInterfaceOrientation:
棄用,並同時更換supportedInterfaceOrientations
和shouldAutorotate
- 這個問題沒有直接關係的。如何在iOS 6中替換willAutorotateToInterfaceOrientation?
相反,我想知道我怎麼能代替willAutorotateToInterfaceOrientation:duration:
,這是在我的應用程序處理幾乎所有的旋轉動畫和佈局結構調整。我的主視圖控制器控制一個全屏視圖,該視圖在啓動時添加到主窗口,並處理應用程序的整個內部佈局,這有點複雜。該視圖控制器中的willAutorotateToInterfaceOrientation:duration:
方法直接調整一些子視圖,並調用處理其他子視圖的C++對象。由於接口的變量性質,其中包括一個複雜的子視圖層次結構,有些不能調整大小,有些不在屏幕上,等等,我不認爲蘋果的自動調整掩碼提供了一個足夠強大的解決方案來處理這種自動旋轉。
是否有某種方式來參加,我在willAutorotateToInterfaceOrientation:duration:
現在做同樣的方式行動?正如我在網上和通過實驗發現,這種方法和didRotateFromInterfaceOrientation:
從未在我的主視圖控制器中的iOS 6。我還發現,viewWillLayoutSubviews
是從來沒有所謂的叫,但我懷疑這會不會很滿足我的需求呢。
請讓我知道如果你需要任何進一步的信息。我希望對此有一個相當直接的解決方案,如果蘋果不符合新的,更窄的協議,這不是蘋果放棄開發人員到狼羣的例子。
編輯:在這種情況下,有助於澄清,這裏的功能的基本的shell我說的是:
在AppDelegate.mm:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self.window makeKeyAndVisible];
MainViewController* mainViewController= [[MainViewController alloc] initWithNibName:nibName bundle:[NSBundle mainBundle]];
[self.window addSubview:mainViewController.view];
return YES;
}
在MainViewController。 mm:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
[UIView beginAnimations:NULL context:nil];
[UIView setAnimationDuration:duration];
[someViewController someMethod];
[someView setFrame:someRect];
[UIView commitAnimations];
someObject->CustomRotationFunction(toInterfaceOrientation, duration);
}
屬簡而言之,假定這些功能和方法發生的最壞情況,例如someObject
擁有改變其框架的意見,它擁有其他對象,它們擁有改變其框架的意見等。
[WWDC 2012](http://developer.apple.com/itunes/?destination=adc.apple.com.16351493766)會話236起始於約23在這個談判一分半鐘。在這裏很難提供一個好的答案,因爲我不知道你得到了什麼樣的瘋狂實施,所以我建議你先看那個視頻。 –