2010-10-15 70 views
2

以前有人問過similar question,但我很想知道iPhone SDK的自動旋轉功能是否允許我們用另一種轉換(例如淡入/淡出)替換替換旋轉動畫。對於模態視圖,我們可以設置modalTransitionStyle,但是沒有用於自動旋轉的這種屬性。iPhone自動旋轉:用淡入/淡出替換旋轉動畫?

如果我不能利用內置功能,我該怎麼實現這個功能?

回答

0

還有的willAnimateRotationToInterfaceOrientation:duration:方法,從文檔:

此方法的默認實現 什麼也不做。如果您 重寫此方法,你不應該 覆蓋要麼 willAnimateFirstHalfOfRotationToInterfaceOrientation:時間: 或 willAnimateSecondHalfOfRotationFromInterfaceOrientation:時間: 方法。

該方法從 動畫塊中調用,該動畫塊用於旋轉 的視圖。您可以覆蓋此方法 並使用它來配置 視圖旋轉期間應發生的其他 動畫。例如,您可以使用它來調整內容的縮放級別 ,更改滾動條 的位置,或者修改您的視圖的其他動畫 屬性。

我想你可以在這裏修改它,並在– willRotateToInterfaceOrientation:duration:– didRotateFromInterfaceOrientation:之前和之後修改。

這對我來說似乎是低效率和低於標準的,因爲它實際上並沒有取代過渡。

我會在UIView上做一個類別,其中包括諸如 - willRotateUsingTransition:等方法,並傳遞一個參數來告訴它淡入淡出,然後將視圖的alpha設置爲零。在每個子類中覆蓋它以包括需要更改其alpha的所有子視圖,如果適用的話。當視圖即將旋轉(使用上述方法)時調用此方法,然後使用清理方法在alpha再次出現時恢復。

編輯:Docs Docs Docs。快速瀏覽一下,揭示了這種方法:- (void)willAnimateSecondHalfOfRotationFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation duration:(NSTimeInterval)duration,我認爲這是不贊成的。作爲討論的一部分,它包含了我之前從文檔中發佈的第二段的內容。

+0

我試圖用這些很多方法來解決這個問題,包括setAnimationDelay,一個/兩個步驟的動畫等等,沒有什麼會擺脫實際的旋轉。不幸的是,我明白,如果我不使用內置的自動旋轉功能,我沒有得到我在IB中定義的自動調整控件的好處。不幸的。 – Stride 2010-10-16 00:16:31

+0

啊。這是不幸的。抱歉。 – JoePasq 2010-10-16 00:57:46

0

我通過將自動定向行爲附加到隱藏視圖,並通過實現我自己的自定義效果來響應相關事件,從而實現了類似的功能。這很麻煩,我不記得所有的細節,但我確實設法對這種行爲進行完全控制。

但是我應該說,就我而言,我想控制旋轉的實施方式。我希望主要佈局保持不變,同時旋轉幾個子視圖。我想不出有一個很好的理由來完全用一個淡入淡出來取代旋轉;它只是混淆了用戶沒有很好的理由。我可以考慮使用淡入淡出效果的唯一原因是您希望切換到完全不同的用戶界面,但即使如此,也沒有理由抑制旋轉效果。

+1

我想,是否有抑制旋轉效應的理由是主觀的。不幸的是,似乎沒有好的技術方法來壓制它。 – Stride 2010-10-16 00:19:29

+0

@Stride:穿着感也是主觀的,但是沒有人穿戴內衣(或者至少,如果他們這樣做,他們通常不會試圖穿上一個協調良好的衣櫥)。在任何情況下,我用指向隱藏視圖的技術都可以完全抑制正常的效果,並讓你做任何你想做的事情。我最終得到了一個視圖控制器,該視圖控制器持有相關的方向方法,其視圖位於未使用的頂層視圖內(即,它不在XIB的主視圖樹下)。我不知道它是否需要嵌套視圖,但那時我已經厭倦了修補,而且它工作。 – 2010-10-16 10:51:55

+0

如果你不告訴我如何着裝,我不會告訴你如何着裝。 – Stride 2010-10-18 18:35:03