2011-07-26 50 views
0

我以下述方式旋轉一個UIView:旋轉後如何在一個方向縮放UIView時防止偏斜?

CGAffineTransform currentTransform = [gestureRecognizer view].transform;  
CGAffineTransform newTransform = CGAffineTransformRotate(currentTransform,rotation); 
[[gestureRecognizer view] setTransform:newTransform]; 

,我想是按比例的旋轉後該視圖(寬度或高度)的一個維度。但是,如果我執行以下操作:

CGAffineTransformScale(self.parent.parentWidget.transform,sX, 1); 

我最終出現傾斜的視圖。我如何防止這種情況發生,並使其能夠在旋轉後調整一個維度的大小?

在這一行動的一個例子是在主題演講中,在那裏你可以旋轉的元素,然後旋轉後抓住一個選擇手柄並調整該元素在這一點上。

回答

2

你的問題是你所申請的順序的一個你的轉換。如果您嘗試在旋轉後在一個維度上縮放視圖,則不會產生所需的效果。縮放將發生在最終旋轉對象的X或Y維中,而不是基於其原始座標系。

爲了達到這種效果,您需要創建一個轉換,在旋轉之前應用縮放,然後將其設置爲您的視圖。這可能需要您跟蹤您的UIView的旋轉和縮放,以便每次更改這些值時都可以重新生成新的轉換。

+0

嗨布拉德,非常感謝您的寶貴意見。幾次增加後,它爲我工作。關鍵是像你所說的「在旋轉之前縮放......」。再次感謝很多。 – MANN

+0

一個更相關的東西......我已經加入我的觀點的四個角和中間(總共八個)調整圖像大小。旋轉後如何決定哪一個將做寬度變化,哪一個做高度修改?就像你有一個UIView(20,20,300,200)90度旋轉寬度和高度調整器得到交換後! – MANN

0

你的觀點總是會歪斜如果使用

CGAffineTransformScale(self.parent.parentWidget.transform,sX, 1); 

嘗試規模相同的值x和y:

​​
+0

感謝烏拉圭回合的答覆....但在我的情況下我只想縮放寬度.. – MANN

相關問題