美文网首页
视图旋转,缩放,平移

视图旋转,缩放,平移

作者: 杨大虾 | 来源:发表于2017-07-05 15:20 被阅读61次

    iOS CGAffine Transform属性

    CGAffineTransform相关函数

    理解iOS中CGAffineTransform与矩阵的关系
    1.缩放

    //传比例
    CG_EXTERN CGAffineTransform CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)
      CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
    

    2.旋转

    CG_EXTERN CGAffineTransform CGAffineTransformMakeRotation(CGFloat angle)
      CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
    
    
    CGAffineTransformMakeRotation(M_PI);
    

    3.平移

    CG_EXTERN CGAffineTransform CGAffineTransformMakeTranslation(CGFloat tx,
      CGFloat ty) CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
    

    二,这种变换状态只能重复一次,再次是不起作用的,

    - (IBAction)clickBtn:(id)sender {
    
           [UIView animateWithDuration:1 animations:^{
    
            _testImage.transform = CGAffineTransformMakeTranslation(100,0);
    
        } completion:^(BOOL finished) {
            _testImage.transform = CGAffineTransformMakeTranslation(0,0);
    
        }];
    
    }
    

    即去掉这句:

            _testImage.transform = CGAffineTransformMakeTranslation(0,0);
    

    点击按钮,向右移动100只能一次,后面无论点多少次都不会动了。


    三,ps:
    CGAffineTransform 和 CATransform3D的区别:

    1、CGAffineTransform 一般用于2D操作,如在 UIView中。而CATransform3D 一般用于操作view的layer的,是 Core Animation的结构体,可以用来做比较复杂的3D操作。
    2、CALayer 和UIView 中的transform属性,分别操作的是CALayer和UIView,二者中的transform的关系可以通过CALayer和UIView之间的关系来理解


    四,CGAffineTransformRotate和CGAffineTransformMakeRotation的区别

    1. CGAffineTransformRotate(imageView.transform, M_PI)
      这个方法每次旋转是以上次旋转之后的中心进行旋转
      2.CGAffineTransformMakeRotation( M_PI)
      而这种方法没次旋转都是以最原始状态下的中心进行旋转,所以这种方法只能旋转一次,再点击就不能使其旋转了

    换言之:

    - (IBAction)clickBtn:(id)sender {   
          _testImage.transform = CGAffineTransformRotate(_testImage.transform, M_PI);
    }
    

    CGAffineTransformRotate只要我点,都会转,
    但是
    如果是CGAffineTransformMakeRotation无论我点多少次,都只会转一次。

    相关文章

      网友评论

          本文标题:视图旋转,缩放,平移

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