2010-01-12 56 views
16

旋轉iPhone窗口的單態和雙態動畫是什麼?適用於iPhone應用程序的單階段和兩階段動畫?

這是「錯誤」的消息我在調試器控制檯(沒有崩潰)獲得:

Using two-stage rotation animation. To use the smoother single-stage animation, this application must remove two-stage method implementations. 

我是通過這本書的工作「從iPhone發展:探索iPhone SDK」,由Apress出版(戴夫·馬克,Jeff LaMarche)參與Swap項目。

回答

15

一切都在UIViewController Class Reference解釋。特別檢查查看旋轉部分靠近頂部。

從參考:

處理視圖旋轉

默認情況下,僅在縱向模式UIViewController類 顯示器意見。 要支持其他方向,您必須覆蓋 shouldAutorotateToInterfaceOrientation: 方法,並且您的子類支持的所有方向返回YES。 如果您的 視圖的自動調整屬性配置正確,那麼可能需要執行那個 。但是,UIViewController類提供 附加掛鉤,以便您根據需要實現 其他行爲。

要暫時關閉不需要的 功能,或者會以其他方式定向 變化時 原因的問題,您可以覆蓋 willRotateToInterfaceOrientation:duration: 方法和執行所需的行動 那裏。然後,您可以覆蓋方法 didRotateFromInterfaceOrientation: 方法,並在方向更改 完成後使用它重新啓用這些 功能。

如果要在定位 更改期間執行自定義動畫 ,可以使用兩種方法之一執行此操作。用於 的方位更改發生在兩個步驟中,通知 發生在開始,中間, 和輪換的終點。 但是,在iPhone OS 3.0中,支持被添加爲 以執行方向 更改一步。使用一步 方向更改傾向於比舊的兩步過程更快 ,並且通常對任何新的 代碼推薦使用 。

要添加動畫的一步 方向改變,重寫 willAnimateRotationToInterfaceOrientation:duration: 方法和執行你的動畫 那裏。使用舊的兩步 方法,覆蓋一個或兩個 willAnimateFirstHalfOfRotationToInterfaceOrientation:duration:willAnimateSecondHalfOfRotationFromInterfaceOrientation:duration: 方法每個步驟之前配置的動畫 。您必須僅選擇一種技術並且僅覆蓋與該技術相關的 方法。如果您重寫與兩步 技術關聯的方法 ,視圖控制器默認使用 該技術。

+2

不幸的是,這並沒有幫助。我沒有使用任何方向功能,並且此錯誤仍然發生。似乎是OS4中的一個錯誤。 – typeoneerror 2010-07-04 19:41:51

+0

這個答案在某些情況下是正確的,但不是其他情況。當然,文檔中的這一部分並沒有完全解釋錯誤 - Apple的UIImagePickerController/presentModalController中存在觸發此錯誤消息(以及不應觸發它)的特定錯誤。仍然試圖找到一個解決方法:(。 – Adam 2011-02-20 16:28:12

+0

@亞當:http://stackoverflow.com/questions/2878947/getting-using-two-stage-rotation-animation-warning-with-uiimagepickercontroller – geon 2011-04-13 09:08:05

3

我從willAnimateFirstHalfOfRotationToInterfaceOrientation:duration:方法更改爲willAnimateRotationToInterfaceOrientation:duration:方法和警告消失。

謝謝。

1

埃德馬蒂的回答是正確的。如果你不覆蓋任何旋轉動畫,它會發生的原因可能是你回答「YES」to shouldAutorotate ..對於某些觀點。如果你根本沒有實現旋轉,那麼你應該不要重寫shouldAutorotate ..方法。如果您確實重寫了該方法,那麼只需重寫單步旋轉方法並將其傳遞給超級方法即可。

3

我已經找到了罪魁禍首在我的情況是的UIImagePickerController(我還沒有覆蓋任何旋轉動畫):

[自我presentModalViewController:imagePicker動畫:是];

用通用的UIViewController替換imagePicker不會產生任何警告。

+0

我有同樣的問題UIImagePickerController有沒有其他方法可以在不改變UIViewController的情況下刪除錯誤? – karim 2010-10-21 10:26:56

+1

您是如何使用UIViewController指定UIImagePickerController的參數的? – Joze 2011-02-23 15:32:44

1

如果您使用的是iOS 4,並且您收到此警告,我找到了一種擺脫它的方法。在您的info.plist中,有一個名爲「支持的界面方向」的項目。選擇你的應用程序支持的方向,並且在啓動imagePicker時兩級警告將消失。

1

@plumiscles答案不適合我 - 沒有項目稱爲「支持的接口方向」,可能是B/C它是一箇舊項目。但是你可以通過直接編輯的.plist文件並添加得到同樣的效果這一點:

<key>UIInterfaceOrientation</key> 
    <string>UIInterfaceOrientationPortrait</string> 
0

我沒有騎過任何的那些兩步的功能,但我打電話給我自己的函數時,我收到orientationChanged通知,我有這行代碼在裏面。評論它擺脫了警告,並允許自動旋轉正常工作。自動旋轉仍然可以用這行代碼工作,直到iOS 4.2,然後完全崩潰。花費了大量的時間尋找爲什麼內置的autoRotate在4.2中停止工作。也許這會幫助別人。

註釋掉此行,以使其工作:
[[UIApplication sharedApplication] setStatusBarOrientation:currentOrientation animated:YES];

1

需要補充UIImagePickerController作爲一個子視圖來解決這個錯誤

[self.view addSubview:picker.view]; 
[self presentModalViewController:picker animated:NO]; 
0

我從plist中「支持的接口方向」刪除行並警告消失。

0

我剛剛有同樣的問題。在我看來,這是一個愚蠢的錯誤,我只是爲了防止其他人陷入同樣的​​問題。

在我的選項卡式應用程序中,我刪除了一個原始ViewControllers並添加了一個新的Storyboard來創建「設置」部分。

這個新的VC必須是一個表格視圖VC,甚至我設計,編譯和運行它沒有問題,當我改變了應用程序的方向,我一直得到這個「使用兩階段旋轉動畫」錯誤。

我的問題是,我忘了改變原來的.h文件接口「UIViewController」爲「UITableViewController」。

完成此操作後,我將故事板身份徽章上的類從常規值更改爲我的SettingsViewController,這就是它的結尾。

我希望它可以幫助別人。我花了一段時間才弄清楚了這一點。

乾杯,

1

我裏面(無標籤)沒有視圖控制器創建tabbarcontroller後出現這個問題,此警告消失,一旦我連接上至少一個視圖控制器它。