我在CALayer的子類中使用這個代碼,這些實例是根CALayer的子層。如何翻轉CALayer圍繞其Y軸?
-(void)setSelected:(bool)s {
selected=s;
if (s)
{
CATransform3D rot = CATransform3DMakeRotation(M_PI, 0, 1, 0);
rot.m34=-1.0/200;
[self setTransform:rot];
}
else
{
CATransform3D rot = CATransform3DMakeRotation(0, 0, 1, 0);
rot.m34=-1.0/200;
[self setTransform:rot];
}
}
當所選擇的屬性設置爲TRUE時,會出現以下情況:轉動完成,直到角度等於M_PI/2,則該層會消失,因爲它是正交的。動畫的結尾是錯誤的:在動畫的第一部分(例如在左側)中出現的邊緣,在左側而不是在右側結束動畫。但內容翻轉。
我認爲這與兩個旋轉矩陣之間的插值有關,但我無法準確理解發生了什麼。
詳情:動畫看起來是這樣做的:
- 通過周圍+ PI/2 Y軸旋轉增量
- 內容由-Pi/2左右翻轉Y軸
- 增量旋轉,就好像它反彈了(yz)飛機
翻轉的內容是我想要實現的。
這裏是我得到的動畫幀。如你所見,梯形的小邊總是在左邊;它應該在動畫結尾的右側(右上框)。
問題是什麼?內容是翻轉的嗎?或者是翻轉角度還是翻轉方向? –