美文网首页
Transform简单使用

Transform简单使用

作者: dicesc | 来源:发表于2016-07-09 12:33 被阅读915次

    一 分类

    平移:

    CGAffineTransformMakeTranslation(10, 0)  : 在初始位置的基础上进行平移

    CGAffineTransformTranslate(self.redView.transform, 10, 0)  多次生效, 以当前状态为基础

    旋转:

    CGAffineTransformMakeRotation:angle  : 是弧度

    M_PI_4 : 45°

    如果传值为负 : 逆时针进行旋转

    CGAffineTransformMakeRotation(M_PI_4)

    CGAffineTransformRotate(self.redView.transform, -M_PI_4)

    缩放:

    CGAffineTransformMakeScale(1.2, 1.2) : x轴上放大1.2倍, y 轴上放大1.2 倍

    如果想要缩小, 就传递小于1的值, 如果传递为负值, 这个view 就疯了

    CGAffineTransformMakeScale(1.2, 1.2)

    CGAffineTransformScale(self.redView.transform, 0.8, 0.5)

    // 当view 的transform 发生变化的时候, 会影响到 frame , 所以, 如果做动画, 就用bounds 和 center 来代替

    animatable. do not use frame if view is transformed since it will not correctly reflect the actual location of the view. use bounds + center instead


    二 代码案列

    //    (一) 平移

    - (IBAction)translate:(id)sender {

    /**

    CGAffineTransformMakeTranslation(10, 0) :在x轴上,向右平移10的距离,在y轴上不动,只能生效一次:相对于初始位置,平移10的距离,当再次平移的时候,如果距离初始位置有10的间距,则不生效

    // self.redView.transform:当前redView transform的值

    CGAffineTransformTranslate(self.redView.transform, 10, 0) :在现在位置的基础上进行平移

    */

    //self.redView.transform = CGAffineTransformMakeTranslation(10, 10);

    self.redView.transform=CGAffineTransformTranslate(self.redView.transform,10,0);

    }

    //  (二)旋转

    - (IBAction)rotate:(id)sender {

    /**

    CGAffineTransformMakeRotation(<#CGFloat angle#>):是弧度

    M_PI_4 : 45°

    如果传值为负:逆时针进行旋转

    */

    //self.redView.transform = CGAffineTransformMakeRotation(M_PI_4);

    NSLog(@"旋转前: %@",NSStringFromCGRect(self.redView.bounds));

    self.redView.transform=CGAffineTransformRotate(self.redView.transform, -M_PI_4);

    NSLog(@"旋转后: %@",NSStringFromCGRect(self.redView.bounds));

    }

    //    (三)放大

    - (IBAction)scale:(id)sender {

    /**

    CGAffineTransformMakeScale(1.2, 1.2) : x轴上放大1.2倍, y轴上放大1.2倍

    如果想要缩小,就传递小于1的值,如果传递为负值,这个view就疯了

    */

    //self.redView.transform = CGAffineTransformMakeScale(1.2, 1.2);

    self.redView.transform=CGAffineTransformScale(self.redView.transform,0.8,0.5);

    }

    //     (四)恢复

    - (IBAction)reset:(id)sender {

    //清空所有的transfrom属性

    self.redView.transform=CGAffineTransformIdentity;

    }

    相关文章

      网友评论

          本文标题:Transform简单使用

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