美文网首页
UIImageView的旋转

UIImageView的旋转

作者: 就那两三事 | 来源:发表于2017-05-16 19:24 被阅读1836次

    使用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复杂一些,步骤:

    1. 首先获取UITableView的CGAffineTransform函数:
      CGAffineTransform transform=self.myImageView.transform;
    2. 对获取的CGAffineTransform函数进行旋转,旋转角度为逆时针旋转90度:
      transform=CGAffineTransformRotate(transform, -M_PI/2.0);
    3. 将新获取的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度

    相关文章

      网友评论

          本文标题:UIImageView的旋转

          本文链接:https://www.haomeiwen.com/subject/syctxxtx.html