使用transform屬性
transform我們一般稱為形變屬性,其本質是通過矩陣變化改變控件的大小、位置、角度等。這里主要講旋轉······
- 獲得CGAffineTransform有多種方法,例如使用CGAffineTransformMake,事實上iOS為我們準備好了三個方法:CGAffineTransformMakeRotation(旋轉)、CGAffineTransformMakeScale(縮放)、CGAffineTransformMakeTranslation(移動)
- 美中不中的是這些方法只能變化一次(也就是只能設置一次),因為這種方式的變化始終是以最原始的狀態(tài)值進行變化。這時,你可以使用:CGAffineTransformRotate(旋轉)、CGAffineTransformScale(縮放)、CGAffineTransformTranslate(移動),分別用于在原來的角度、縮放、移動位置的基礎上做出修改
使用CGAffineTransformMakeRotation
只能變化一次,因為這種方式的變化始終是以最原始的狀態(tài)值進行變化的,所以只能變化一次
例子:
<code>
UIImageView *openImg = [[UIImageView alloc] initWithFrame:CGRectMake(30, 30, 30, 30)];
[openImg setImage:[UIImage imageNamed:@"drop_down1"]];
openImg.transform = CGAffineTransformMakeRotation(M_PI);
</code>
上面代碼簡單來說,就是創(chuàng)建一個UIImageView,設置圖片,并將自身順時針旋轉180度
使用CGAffineTransformRotate
能夠多次變化,每次變化都是以上一次的狀態(tài)(CGAffineTransform t)進行的變化,所以可以多次變化
CGAffineTransformRotate的使用相對來說比CGAffineTransformMakeRotation復雜一些,步驟:
- 首先獲取UITableView的CGAffineTransform函數(shù):
CGAffineTransform transform=self.myImageView.transform; - 對獲取的CGAffineTransform函數(shù)進行旋轉,旋轉角度為逆時針旋轉90度:
transform=CGAffineTransformRotate(transform, -M_PI/2.0); - 將新獲取的CGAffineTransform函數(shù)賦給ImageView(不一定是ImageView,其它也可以,這里不贅述),即可旋轉:
self.myImageView.transform=transform;
例子:
<code>
//創(chuàng)建openImg,并設置圖片
UIImageView *openImg = [[UIImageView alloc] initWithFrame:CGRectMake(30, 30, 30, 30)];
[openImg setImage:[UIImage imageNamed:@"drop_down1"]];
//創(chuàng)建transform對象
CGAffineTransform transform = openImg.transform;
//順時針旋轉180度
transform=CGAffineTransformRotate(transform, M_PI);
//將新獲取的CGAffineTransform函數(shù)賦給ImageView
openImg.transform = transform;
</code>
其它
- CGAffineTransformMakeRotation的參數(shù)是 <em>弧度</em> 而不是度
- CGAffineTransformRotate的參數(shù)是當前的狀態(tài)和弧度
- <code>M_PI</code>是180度,同理<code>M_PI*2.0</code>是360度,<code>M_PI/2.0</code>是90度
- <code>M_PI</code>代表 <em>順時針</em> 轉180度,<code>-M_PI</code>代表 <em>逆時針</em> 轉180度