使用transform属性
transform我们一般称为形变属性,其本质是通过矩阵变化改变控件的大小、位置、角度等。这里主要讲旋转······
- 获得CGAffineTransform有多种方法,例如使用CGAffineTransformMake,事实上iOS为我们准备好了三个方法:CGAffineTransformMakeRotation(旋转)、CGAffineTransformMakeScale(缩放)、CGAffineTransformMakeTranslation(移动)
- 美中不中的是这些方法只能变化一次(也就是只能设置一次),因为这种方式的变化始终是以最原始的状态值进行变化。这时,你可以使用:CGAffineTransformRotate(旋转)、CGAffineTransformScale(缩放)、CGAffineTransformTranslate(移动),分别用于在原来的角度、缩放、移动位置的基础上做出修改
使用CGAffineTransformMakeRotation
只能变化一次,因为这种方式的变化始终是以最原始的状态值进行变化的,所以只能变化一次
例子:
<code>
UIImageView *openImg = [[UIImageView alloc] initWithFrame:CGRectMake(30, 30, 30, 30)];
[openImg setImage:[UIImage imageNamed:@"drop_down1"]];
openImg.transform = CGAffineTransformMakeRotation(M_PI);
</code>
上面代码简单来说,就是创建一个UIImageView,设置图片,并将自身顺时针旋转180度
使用CGAffineTransformRotate
能够多次变化,每次变化都是以上一次的状态(CGAffineTransform t)进行的变化,所以可以多次变化
CGAffineTransformRotate的使用相对来说比CGAffineTransformMakeRotation复杂一些,步骤:
- 首先获取UITableView的CGAffineTransform函数:
CGAffineTransform transform=self.myImageView.transform; - 对获取的CGAffineTransform函数进行旋转,旋转角度为逆时针旋转90度:
transform=CGAffineTransformRotate(transform, -M_PI/2.0); - 将新获取的CGAffineTransform函数赋给ImageView(不一定是ImageView,其它也可以,这里不赘述),即可旋转:
self.myImageView.transform=transform;
例子:
<code>
//创建openImg,并设置图片
UIImageView *openImg = [[UIImageView alloc] initWithFrame:CGRectMake(30, 30, 30, 30)];
[openImg setImage:[UIImage imageNamed:@"drop_down1"]];
//创建transform对象
CGAffineTransform transform = openImg.transform;
//顺时针旋转180度
transform=CGAffineTransformRotate(transform, M_PI);
//将新获取的CGAffineTransform函数赋给ImageView
openImg.transform = transform;
</code>
其它
- CGAffineTransformMakeRotation的参数是 <em>弧度</em> 而不是度
- CGAffineTransformRotate的参数是当前的状态和弧度
- <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度