2012-05-24 63 views
1

我想3D在U軸上動畫UIImageView,因此它會做180度旋轉。在90 degres我想改變圖像。 (這就是爲什麼我在2)「打破」了動畫。與3D動畫ios問題

動畫效果很好,但問題在於第二張圖像是上下顛倒的。任何想法我應該怎麼做的圖像被繪製正常?

這裏是我的代碼

i++; 
[UIView animateWithDuration:2 animations:^{ 

    self.imageView.layer.transform = CATransform3DMakeRotation(-M_PI/2 , 1, 0,0); 

} completion:^(BOOL finished){ 

    UIImage *bottomI = (UIImage *)[bottom objectAtIndex:i]; 
    self.second.image =bottomI; 

    [UIView animateWithDuration:2 animations:^{ 

      imageView.layer.transform = CATransform3DMakeRotation(M_PI , 1, 0,0); 

    } completion:^(BOOL finised){ 

    }]; 

}]; 

回答

1

我做了什麼(使用分組CABasicAnimation對象而不是視圖動畫,但同樣的技巧應該工作)是旋轉視圖/圖層的第一個90度,然後旋轉180度沒有動畫,然後開始下半部分動畫。這樣,動畫的後半部分實際上會導致視圖/圖層的正面旋轉到視圖中,就好像它是背面一樣,但不會倒退。

當您切換圖像並將其旋轉180度時,視圖/圖層對觀察者是邊緣的,因此用戶無法看到這些更改。當它旋轉剩餘的90度時,新圖像就位並且它看起來正在顯露視圖/圖層的背面。

它完美的作品。

0

當你的3D旋轉視圖,它類似於現實生活中的旋轉對象。所以,一旦旋轉超過90度,它會顛倒物體。這就是爲什麼你的第二張圖像被倒置。做最簡單的事情是設置仿射變換的圖像180度旋轉,它在加入之前

編輯:我的愚蠢....

是我的本意是this

bottomI.orientation = UIImageOrientationDown 
+0

你不能在UIImage上做CGAffineTransformMakeRotation – user1078065