zoukankan      html  css  js  c++  java
  • 图层的隐藏动画

    Main.storyboard

    ViewController.m

    //

    //  ViewController.m

    //  7A13.图层的隐式动画

    //

    //  Created by huan on 16/2/4.

    //  Copyright © 2016 huanxi. All rights reserved.

    //

     

    #import "ViewController.h"

     

    @interface ViewController ()

    //对象有个强引用,就永远不会被销毁。imageView添加到控制器的view里去了。self.view.subviews  控制器在,所有属性在。

    @property (weak, nonatomic) IBOutlet UIImageView *imageView;

    @property (nonatomic,weak) CALayer *layer;//非根层

    //为什么用weak,

     

    @end

     

    @implementation ViewController

     

    - (void)viewDidLoad {

        [super viewDidLoad];

        // Do any additional setup after loading the view, typically from a nib.

        /**

         * weak strong 使用

         * 只要对象被强引用一次,就无须再次强引用

         * self.view.subviews

         */

    //    [self.view addSubView:imageView]

    //    self.view.subviews imageView被这个数组强引用一次。imageView跑到这个控制器的数组里去了,控制器在,这个数组在。

    //    self.view.subviews

        //创建一个 非根层

        CALayer *layer = [CALayer layer];

        //设置内容

        layer.contents = (id)[UIImage imageNamed:@"papa"].CGImage;

        //设置大小

        layer.bounds = CGRectMake(0, 0, 100, 100);

        //设置位置

        layer.position = CGPointMake(150, 150);

        //设置锚点

        layer.anchorPoint = CGPointMake(0.5, 0.5);

        [self.view.layer addSublayer:layer];

    //    self.view.layer.sublayers layer被这个数组强引用一次。

        self.layer = layer;

    }

     

    -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

        //隐式动画

    //    self.imageView.layer 它是根层

    #warning  根层改变属性是没有动画,只有非根层改变属性就有默认的动画

        //设置根层的大小

        self.imageView.layer.bounds = CGRectMake(0, 0, 150, 150);

        //设置非根层的大小

        self.layer.bounds = CGRectMake(0, 0, 150, 150);

        //想默认动画时间设置长一点

        [CATransaction begin];

    //    [CATransaction setDisableActions:YES];//关闭隐藏动画

        [CATransaction setAnimationDuration:5];

        //看到transform旋转的动画效果

        self.layer.transform = CATransform3DMakeRotation(M_PI_4, 0, 1, 0);

    //    self.layer.bounds = CGRectMake(0, 0, 150, 150);

        [CATransaction commit];

    }

    @end

    结果

  • 相关阅读:
    SDN课程阅读作业(2)
    2019 SDN上机第5次作业
    第05组 Alpha事后诸葛亮
    第05组 Alpha冲刺(4/4)
    2020-4-5助教一周小结
    2020-3-29助教一周小结
    2020-3-22助教一周小结
    2020-03-15助教一周小结
    2020-03-08助教一周小结
    第一次个人编程作业(个人实现)
  • 原文地址:https://www.cnblogs.com/Lu2015-10-03/p/5191202.html
Copyright © 2011-2022 走看看