2013-08-06 51 views
0

我使用CALayer交互式書籍引擎,並希望旋轉CALayer圍繞它的中心,但是當我將旋轉變換(使用基於用戶輸入的角度)應用於CALayer它變得瘋狂:層以非常奇怪的方式伸展和移動並消失。我要做的就是CALayer的旋轉變換奇怪的行爲

[CATransaction begin]; 
[CATransaction setValue: (id) kCFBooleanTrue forKey: kCATransactionDisableActions]; 
... 
layer.transform = CATransform3DMakeRotation(angle, 0, 0, 1); 
... 
[CATransaction commit]; 

有趣的是,當我的角度是M_PI或M_PI/2,或者它的尺度變換一切正常,但是當它的旋轉和任何其他角度層都瘋了。

有沒有人知道發生了什麼,以及如何解決它?

+0

CALayer的起源在中心嗎?如果不是,則需要先將原點轉換爲中心,然後進行旋轉,然後將其轉換回來。 – user1118321

+0

試試這個'layer.anchorPoint = CGPointMake(0.5,0.5);' – Bala

+0

你的圖層是否屬於視圖?如果是這樣,該視圖是否使用自動佈局?自動佈局系統會嘗試設置視圖的框架,並且如果您的視圖被轉換,通常會導致奇怪的結果。 –

回答

2

我自己找到原因:這是因爲我平行移動層使用.frame而不是.position屬性:框架屬性本身是基於變換計算,因此設置它產生了'瘋狂'的行爲。