使用transform屬性
transform我們一般稱為形變屬性疾层,其本質(zhì)是通過矩陣變化改變控件的大小裁蚁、位置苟径、角度等案站。這里主要講旋轉(zhuǎn)······
- 獲得CGAffineTransform有多種方法,例如使用CGAffineTransformMake棘街,事實(shí)上iOS為我們準(zhǔn)備好了三個(gè)方法:CGAffineTransformMakeRotation(旋轉(zhuǎn))蟆盐、CGAffineTransformMakeScale(縮放)、CGAffineTransformMakeTranslation(移動(dòng))
- 美中不中的是這些方法只能變化一次(也就是只能設(shè)置一次)遭殉,因?yàn)檫@種方式的變化始終是以最原始的狀態(tài)值進(jìn)行變化石挂。這時(shí),你可以使用:CGAffineTransformRotate(旋轉(zhuǎn))险污、CGAffineTransformScale(縮放)痹愚、CGAffineTransformTranslate(移動(dòng)),分別用于在原來的角度蛔糯、縮放拯腮、移動(dòng)位置的基礎(chǔ)上做出修改
使用CGAffineTransformMakeRotation
只能變化一次,因?yàn)檫@種方式的變化始終是以最原始的狀態(tài)值進(jìn)行變化的蚁飒,所以只能變化一次
例子:
<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)建一個(gè)UIImageView,設(shè)置圖片飒箭,并將自身順時(shí)針旋轉(zhuǎn)180度
使用CGAffineTransformRotate
能夠多次變化狼电,每次變化都是以上一次的狀態(tài)(CGAffineTransform t)進(jìn)行的變化,所以可以多次變化
CGAffineTransformRotate的使用相對(duì)來說比CGAffineTransformMakeRotation復(fù)雜一些弦蹂,步驟:
- 首先獲取UITableView的CGAffineTransform函數(shù):
CGAffineTransform transform=self.myImageView.transform; - 對(duì)獲取的CGAffineTransform函數(shù)進(jìn)行旋轉(zhuǎn)肩碟,旋轉(zhuǎn)角度為逆時(shí)針旋轉(zhuǎn)90度:
transform=CGAffineTransformRotate(transform, -M_PI/2.0); - 將新獲取的CGAffineTransform函數(shù)賦給ImageView(不一定是ImageView,其它也可以凸椿,這里不贅述)削祈,即可旋轉(zhuǎn):
self.myImageView.transform=transform;
例子:
<code>
//創(chuàng)建openImg,并設(shè)置圖片
UIImageView *openImg = [[UIImageView alloc] initWithFrame:CGRectMake(30, 30, 30, 30)];
[openImg setImage:[UIImage imageNamed:@"drop_down1"]];
//創(chuàng)建transform對(duì)象
CGAffineTransform transform = openImg.transform;
//順時(shí)針旋轉(zhuǎn)180度
transform=CGAffineTransformRotate(transform, M_PI)髓抑;
//將新獲取的CGAffineTransform函數(shù)賦給ImageView
openImg.transform = transform;
</code>
其它
- CGAffineTransformMakeRotation的參數(shù)是 <em>弧度</em> 而不是度
- CGAffineTransformRotate的參數(shù)是當(dāng)前的狀態(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>順時(shí)針</em> 轉(zhuǎn)180度吨拍,<code>-M_PI</code>代表 <em>逆時(shí)針</em> 轉(zhuǎn)180度