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

    结果

  • 相关阅读:
    C++中int与string的相互转换【转】
    C# 获取文件名及扩展名【转】
    k8s查看容器日志---查看运行中指定pod以及指定pod中容器的日志
    shell字符串截取
    Kubernetes集群之清除集群
    Expect Command And How To Automate Shell Scripts Like Magic
    CentOS 7搭建本地yum源和局域网yum源
    使用MobaXterm配置ssh隧道(port forwarding)
    重置jenkins用户名密码
    Kubernetes之Taints与Tolerations 污点和容忍
  • 原文地址:https://www.cnblogs.com/Lu2015-10-03/p/5191202.html
Copyright © 2011-2022 走看看