2011-06-02 101 views
1

使用CGAffineTransformMakeScale縮放UIView從0.1到1.0的Im。使用CGAffineTransformMakeScale縮放UIView時旋轉

問題在於縮放動畫時視圖也在旋轉。所以它以1.0和90º的旋轉比例結束。

[self presentModalViewController:slideTwoViewController animated: NO]; 
[slideTwoViewController.view setTransform:CGAffineTransformMakeScale(0.1,0.1)]; 
[UIView beginAnimations: nil context: nil]; 
[UIView setAnimationDuration:2.0]; 
[slideTwoViewController.view setTransform:CGAffineTransformMakeScale(1.0,1.0)]; 
[UIView commitAnimations]; 

最初的應用方向是橫向左右。所以當動畫結束時,UIView看起來就像肖像一樣。

這是應該發生的嗎?我錯過了什麼嗎?

感謝

+0

是什麼樣的UIView?這是否發生在模擬器和設備上? – tidwall 2011-06-02 18:06:50

+0

ViewController的視圖,默認的視圖。這發生在模擬器中。 – Canelo 2011-06-02 18:08:25

回答

3

我敢打賭,是認爲已經有一個轉換集,你是新覆蓋它變換,它是動畫的差異。

嘗試使用以下函數:

CGAffineTransformScale(<#CGAffineTransform t#>, <#CGFloat sx#>, <#CGFloat sy#>) 

有了這個功能,你傳遞原始變換slideTwoViewController.view.transform和您的比例因子。

slideTwoViewController.view.transform = CGAffineTransformScale(slideTwoViewController.view.transform, 0.1, 0.1); 
+0

假設初始slideVC.view.transform比例尺是(1.0,1.0),使用CGAffineTransformScale(0.1,0.1)它可以正確收縮。但是初始比例必須是0.1,所以當我將它縮放到初始值CGAffineTransformScale(0.1,0.1),然後在塊動畫I CGAffineTransformScale(1.0,1.0)中時,沒有動畫,比例爲0.1。 UIView的方向是正確的。 – Canelo 2011-06-02 18:52:36

0

儘管縮放rootview的嘗試添加子視圖其成爲新的僞rootview(與所有其他子視圖下方連接),然後擴展僞rootview。通過這種方式,您可以避免系統在真正rootview(例如自動旋轉)上產生的任何變換衝突,然後您可以自由使用CGAffineTransformMakeScale。