2011-09-27 58 views
0

所以最近我一直在玩動畫,並且遇到了定位點。我明白,默認情況下,定位點(0.5,0.5)是視圖的中間,您可以對其進行更改,以便定位點位於其中一個邊框上。我的問題是,如果我想讓視圖圍繞視圖的超視圖中的特定點旋轉,我該如何繼續?任何幫助是極大的讚賞關於定位點的問題

回答

0

我想通了自己:我想要的錨點在左邊屏幕邊框,所以我做了以下內容:

CGFloat subviewX = ((1/view.frame.size.width)*view.frame.origin.x) * (-1); 
CGFloat subviewY = 0.5; 
+0

優秀。將要回答,但今天有一些bug被捆綁了! –

0

結帳這個問題how to rotate CALayer at one point

而且 - 雖然我猜你可能已經做到了這一點 - 有核心動畫編程指南,Layer Geometry and Transforms的讀取。

你的問題的不同之處在於你要指定一個在視圖的超級視圖中的旋轉點。要做到這一點,您想要將該超級視點轉換爲子視圖。你可以這樣做,如下:

  1. 把你的超級界限,例如(0,0,500,500)
  2. 以您的子視圖框爲例, (50,50,100,100)
  3. 帶上您的超級視角旋轉點,例如(75,75)
  4. 轉換其相對於一個點到子視圖如下:

    CGFloat subviewX = 75.0f - subview.frame.x; 
    CGFloat subviewX = 75.0f - subview.frame.y; 
    
  5. 這給了預期的結果(25.0f,25.0f)

要旋轉具有CABasicAnimation的CALayer,請查看此問題的選定答案:CALayer with rotation animation

+0

謝謝你,但我有CABasicAnimation這樣做,所以你給我這裏不適用於我的情況...任何想法如何做到這一點?謝謝! – kopproduction

+0

不用擔心!請參閱上面的編輯鏈接 –

+0

的一些代碼好吧,我現在有點困惑..鏈接真的只是告訴我如何用CABasicAnimation做旋轉,我已經知道了。我正在尋找的基本上是你上面做的,計算superview中的旋轉點,但是你所做的不適合我,因爲圖層中的座標系是不同的,如果(0.5,0.5)是中心,例如,25將會在屏幕上顯示......這讓我發瘋,還有什麼可以給我的建議嗎? – kopproduction