我在獲取CoreAnimation旋轉關於其中心點的NSView時遇到了一些麻煩。我想要做的就是旋轉一個NSView,同時保持其中心點靜止,以便該對象看起來在原地旋轉。CoreAnimation setFrameCenterRotation不能正確動畫
我選擇這樣做的方式涉及在NSView中使用animator
屬性。代碼如下:
[NSAnimationContext beginGrouping];
[[NSAnimationContext currentContext] setDuration:1.0];
[[view animator] setFrameCenterRotation:45.0];
[NSAnimationContext endGrouping];
哪裏view
的是,我想旋轉的NSView。這段代碼的結果使得對象在某種程度上突然向右移動,然後進行旋轉。最終的結果是正確的,但由於它在一開始就進行了移動,所以動畫看起來不正確。我假設這是因爲setFrameCenterRotation:
的工作原理是它首先將幀原點轉移到視圖的中心點,然後進行旋轉。
我在這裏做錯了什麼?有沒有更好的方法來旋轉關於中心的NSView?非常感謝!
感謝您的回答,但似乎我有另一個問題。該層的anchorPoint肯定是問題的根源,但不應該(0.5,0.5)默認?它在蘋果的文檔中如此明確地表示。無論如何,我的問題現在發生在我有一個'NSViewAnimation'與旋轉動畫同時運行的時候。當NSViewAnimation同時運行時,設置錨點什麼也不做!但是當我不運行NSViewAnimation時,它工作正常。任何想法爲什麼可能會發生? – zanneth 2011-03-27 23:27:00
謝謝@Zanneth!我遇到了類似的問題,您的評論給我提供瞭解決問題的必要線索。我正在旋轉imageView的根層。其anchorPoint按照標準座標方向在0,0,左下方讀出。我可以將它設置爲.5,.5,但它會被忽略,就像你經歷過的一樣。移動圖像和動畫到子圖層解決了我的問題。顯然,每當一個視圖或其根層動畫時,就會敲掉anchorPoint。希望你能夠在你的項目中解決這個問題。 – Wienke 2011-04-17 14:33:50
如何將動畫移動到「子圖層」?我可以將定位點設置爲0.5,但是然後視圖突然'跳'到0,0原點,但與其中心一起。 – strange 2012-07-03 22:15:52