OC - 22.隐式动画

简介


  • 每个UI控件,默认自动创建一个图层(根图层),即每个UI控件对应于至少一个图层
  • 每一个UIView内部都默认关联着一个CALayer,我们可用称这个Layer为Root Layer(根层)
  •  

    所有的非Root Layer,也就是手动创建的CALayer对象,都存在着隐式动画

    什么是隐式动画?

  •  

    当对非Root Layer的部分属性进行修改时,默认会自动产生一些动画效果

  • 而这些属性称为Animatable Properties(可动画属性)
  • 常见的可执行隐式动画的属性
    • 位置与尺寸

      • anchorPoint,锚点
      • position,位置
      • bounds, 尺寸
      • frame,位置与尺寸
      • transform,形变
    • appearance
      • backgroundColor,背景色
      • hidden,是否隐藏
      • opacity,透明度
      • maskToBounds,是否剪切超出图层区域的的内容
      • cornerRadius,圆角半径
    • 边框
      • borderWidth,边框宽度
      • borderColor,边框颜色
    • 阴影
      • shadowColor,背景颜色
      • shadowOffset,背景偏移量
      • shadowOpacity,背景透明度
      • shadowPath,背景边框的路径,即背景显示什么形状的图形
      • shadowRaduis,背景的圆角半径

示例


  • 通过storyboard创建一个UIView对象,并拥有该对象

    @property (weak, nonatomic) IBOutlet UIView *blueView;
  • 点击屏幕,动态修改图层的可动画属性
    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
    {
    	//通过随机数产生随机的旋转角度
    	CGFloat angle = angleToRadion(arc4random_uniform(360) + 1);
    	//旋转
    	self.blueView.layer.transform = CATransform3DMakeRotation(angle, 0, 0, 1);
    	//移动到随机位置(50~249, 50~449)
    	self.blueView.layer.position = CGPointMake(arc4random_uniform(200) + 50, arc4random_uniform(400) + 50);
    	//设置随机的圆角半径
    	self.blueView.layer.cornerRadius = arc4random_uniform(50);
    	//设置随机的背景颜色
    	self.blueView.layer.backgroundColor = [self randomColor].CGColor;
    	//设置随机的边框宽度
    	self.blueView.layer.borderWidth = arc4random_uniform(10);
    	//设置随机的边框颜色
    	self.blueView.layer.borderColor = [self randomColor].CGColor;
    }
  • 产生随机颜色的方法
    - (UIColor *)randomColor
    {
    	return [UIColor colorWithRed:arc4random_uniform(256) / 255.0 green:arc4random_uniform(256) / 255.0 blue:arc4random_uniform(256) / 255.0 alpha:1];
    }
  • 实现效果

时间: 2024-07-29 21:22:15

OC - 22.隐式动画的相关文章

iOS开发——图形编程OC篇&(三)CALayer隐式动画

CALayer隐式动画 在前面几讲中已经提到,每一个UIView内部都默认关联着一个CALayer,我们可用称这个Layer为Root Layer(根层).所有的非Root Layer,也就是手动创建的CALayer对象,都存在着隐式动画. * 当对非Root Layer的部分属性进行相应的修改时,默认会自动产生一些动画效果,这些属性称为Animatable Properties(可动画属性). * 列举几个常见的Animatable Properties: ? bounds:用于设置CALay

iOS边练边学--CALayer,非根层隐式动画,钟表练习

一.CALayer UIView之所以能显示在屏幕上,完全是因为他内部的一个图层 在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可以访问这个层 当UIView需要显示到屏幕上时,会调用drawRect:方法进行绘制,并且会将所有内容绘制在自己的图层上,绘图完毕后,系统会将图层拷贝到屏幕上,于是就完成了UIView的显示 UIView本身不具备显示的功能,是他内部的层才有显示功能 二.CALayer的基本使用 三.关于CALa

UI进阶--隐式动画

隐式动画:直接改变属性就会有动画效果,非根层才有隐式动画,根层是没有隐式动画的.根层与非根层:控件的layer属性是根层控件的layer属性的子层就是非根层隐藏动画的禁止: 1 [CATransaction begin]; 2 [CATransaction setDisableActions:YES]; 3 //设置隐式动画动画时间 4 self.myview.layer.position = CGPointMake(10, 10); 5 [CATransaction commit]; 6 布局

隐式动画和核心动画

1. 隐式动画,只有非根层的CALayer才有隐式动画,即改变图层的属性的时候,比如大小,颜色等,会自动添加一个颜色效果, 根层:控件里面的CALayer 非根层:自己创建的CALayer,不依附控件存在的CALayer 隐式动画的使用场景不多 2. 核心动画: Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍.也就是说,使用少量的代码就可以实现非常强大的功能.Core Animation可以用在Mac OS X和iOS平台.Core

核心动画-04-CALayer隐式动画

1 // 2 // ViewController.m 3 // 04 CALayer的隐式动画 4 // 5 // Created by ZhuJiaCong on 16/4/18. 6 // Copyright © 2016年 wxhl. All rights reserved. 7 // 8 9 #import "ViewController.h" 10 11 @interface ViewController () 12 { 13 CALayer *_layer; 14 } 15

UICollectionViewFlowLayout的隐式动画

前几天在gitHub看到个不错的效果,就是DaiExpandCollectionView,效果如图: 所以赶紧下下来源码看看他怎么实现的,打开源码看了半天,发现他没写什么关于动画的代码啊... 经高人指点,才明白原来他是利用了UICollectionViewFlowLayout的隐式动画! 所谓隐式动画,就是系统自带的动画了,其实也不是什么高大上的东西,关键是我怎么就没想到可以这么用! 研究了半天人家的源码,基本了解了他实现的思路,然后发现他的这个库用起来比较不方便,需要继承他的collecti

CALayer创建和和如何隐藏隐式动画

//修改CALay属性会产生隐式动画 - (void)viewDidLoad { [super viewDidLoad]; // 创建图层 CALayer *layer = [CALayer layer]; layer.backgroundColor = [UIColor blueColor].CGColor; // 设置frame layer.frame = CGRectMake(100, 100, 100, 100); // 添加到控制器view的图层上面 [self.view.layer

ios隐式动画

1. 每一个UIView内部都默认关联着一个CALayer,我们可以称这个Layer为Root Layer 2. 所有的非Root Layer,也就是手动创建的CALayer对象都存在着隐式动画 什么是隐式动画 1 当对非Root Layer的部分属性进行修改时,默认会自动产生一些动画效果 2 而这些属性称为Animatable Properties(可动画属性) 列举几个常见的Animatable Properties(可动画属性) bounds:用于设置CALayer的宽度和高度.修改这个属

iOS Core Animation Advanced Techniques(四):隐式动画和显式动画

隐式动画 按照我的意思去做,而不是我说的. -- 埃德娜,辛普森 我们在第一部分讨论了Core Animation除了动画之外可以做到的任何事情.但是动画师Core Animation库一个非常显著的特性.这一章我们来看看它是怎么做到的.具体来说,我们先来讨论框架自动完成的隐式动画(除非你明确禁用了这个功能). 事务 Core Animation基于一个假设,说屏幕上的任何东西都可以(或者可能)做动画.动画并不需要你在Core Animation中手动打开,相反需要明确地关闭,否则他会一直存在.