2012-02-01 57 views
10

我想以編程方式旋轉視圖,而且我用下面的代碼:寬度和高度增加後CGAffineTransformRotate應用到一個UIView

CGAffineTransform rotateTransform = contentView.transform; 
CGAffineTransform rotatenewTransform = CGAffineTransformRotate(rotateTransform,aFloatRotate); 
contentView.transform = rotatenewTransform; 

當我做這個內容查看的寬度和高度(我UIView)增加。

我該怎麼做才能讓contentView保持原樣並且它也旋轉?

在此先感謝。

我在這裏解釋更多的細節我的問題:

我的內容查看包含一個按鈕,並在它的ImageView的。 這個contentView添加在背景中,而且這個contentView不應該離開這個背景邊界。

但是當我通過上面的代碼旋轉這個contentview時,contentView的widht和height會增加,所以有時候它會離開背景邊界。

我希望這將清楚給你。 :)

+0

請選擇答案,如果其確實 – GameLoading 2012-02-02 13:08:40

+1

@fasttrack 仍然面臨同樣的問題。 – Prashant 2012-02-21 04:36:12

+0

我找到了解決方案,爲此我保存了視圖的轉換,現在它的工作正常。 – Prashant 2012-03-26 05:11:21

回答

9

寬度和高度(大概你從frame.size得到這個)不得不改變,因爲它們描述了保存整個旋轉視圖的最小矩形 - 如果你旋轉一個矩形45度,那麼矩形保存旋轉矩形比原始矩形更寬更高。

旋轉視圖的「實際」大小仍將在bounds矩形中可用 - 這在視圖的未旋轉的內部座標系中表示。

所以,如果你原來的frame爲原點(100,100),大小(100,50),你的旋轉視圖將有一個frame其中起點和大小,可以在它適合你的旋轉視圖中的矩形,在描述superview的座標系。如果你現在這樣做:

CGFloat width = contentView.frame.size.width; 

你會得到你改變的價值。但是,如果你這樣做:

CGFloat width = contentView.bounds.size.width; 

你會得到你的原始100寬度值。

+0

能否請你用一些例子的代碼來解釋它。 – Prashant 2012-02-01 09:46:11

+0

我試圖設置contentView的邊界,但其子仍然不在contentView中。 – Prashant 2012-02-01 11:31:37

+0

我想旋轉一個視圖,但視圖的寬度和高度不應改變。 – Prashant 2012-02-01 12:07:32

相關問題