zoukankan      html  css  js  c++  java
  • CALayer

      1 #import "ViewController.h"
      2 
      3 @interface ViewController ()
      4 @property (weak, nonatomic) IBOutlet UIImageView *imageView;
      5 @property (weak, nonatomic) IBOutlet UIView *uiview;
      6 
      7 @end
      8 
      9 @implementation ViewController
     10 
     11 - (void)viewDidLoad {
     12     [super viewDidLoad];
     13     
     14 #pragma mark - layer层的一些常用属性
     15     //将视图设置为圆角
     16     self.imageView.layer.cornerRadius = 10;
     17     //注意:只设置上边一个属性是实现不了圆角效果的,还需要设置如下属性(这个属性也影响阴影的效果)
     18 //    self.imageView.layer.masksToBounds = YES;
     19     //设置阴影
     20     self.imageView.layer.shadowOffset = CGSizeMake(-20, 10);
     21     //设置颜色
     22     self.imageView.layer.shadowColor = [UIColor redColor].CGColor;
     23     //设置透明度
     24     self.imageView.layer.shadowOpacity = 1.0;
     25     //阴影的模糊度
     26     self.imageView.layer.shadowRadius = 10;
     27     
     28     
     29 //    self.uiview.layer.cornerRadius = 10;
     30 //   // self.uiview.layer.masksToBounds = YES;
     31 //    
     32 //    self.uiview.layer.shadowOffset = CGSizeMake(10, 10);
     33 //    
     34 //    self.uiview.layer.shadowColor = [UIColor magentaColor].CGColor;
     35 //    
     36 //    self.uiview.layer.shadowOpacity = 1.0;
     37     
     38     
     39     
     40 #pragma mark - 自定义layer
     41    // [self customLayer];
     42 }
     43 #pragma mark - CABasicAnimation按钮的响应方法
     44 - (IBAction)CABasicAnimation:(UIButton *)sender {
     45     //1.创建动画对象
     46     CABasicAnimation *basicAnimation = [CABasicAnimation animation];
     47     //2.告诉系统需要执行什么样的动画,字符串不能随便给,必须是CALayer类中的一个属性
     48     basicAnimation.keyPath = @"position";
     49     //3.告诉动画从哪里开始到哪里
     50     basicAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(100, 100)];
     51     basicAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(300, 300)];
     52 #warning 如果不想让控件回到原来的位置,需要设置一下两个属性
     53     basicAnimation.removedOnCompletion = NO;
     54     //保存动画最新转态的属性
     55     basicAnimation.fillMode = kCAFillModeForwards;
     56     
     57     //4.动画的延续时间
     58     basicAnimation.duration = 3.0;
     59     //5.对控件的layer层添加动画
     60     [self.imageView.layer addAnimation:basicAnimation forKey:@"basic"];
     61     
     62     /******************实现翻转效果*****************/
     63     CABasicAnimation *basic = [CABasicAnimation animation];
     64     basic.keyPath = @"transform";
     65     basic.duration = 3.0;
     66     //翻转的一个角度设置,第一个是角度,后边三个是以哪个轴旋转
     67     basic.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_2_PI, 1, 0, 0)];
     68     [self.imageView.layer addAnimation:basic forKey:@"basic1"];
     69     
     70     //移除不需要的动画,根据上面给的关键字移除
     71     [self.imageView.layer removeAnimationForKey:@"basic"];
     72 }
     73 #pragma mark - 帧动画
     74 - (IBAction)CAkeyframeAnimation:(UIButton *)sender {
     75     //1.需要动画的对象
     76     CAKeyframeAnimation *keyFrameAnimation = [CAKeyframeAnimation animation];
     77     //2.设置动画轨迹,transform点后边的内容根据
     78     keyFrameAnimation.keyPath = @"transform.rotation";
     79     //3.设置要翻转的角度[计算弧度的公式:度数/180 * M_PI],下面的方法相当于上面的fromValue,toValue
     80     keyFrameAnimation.values = @[@(-45/180.0*M_PI),@(45/180.0*M_PI)];
     81     keyFrameAnimation.repeatCount = 1;
     82     //4.设置动画时长
     83     keyFrameAnimation.duration = 3;
     84     //5.添加到layer层上
     85     [self.imageView.layer addAnimation:keyFrameAnimation forKey:@"keyFrame"];
     86     
     87 }
     88 
     89 -(void)customLayer{
     90     //创建layer的一个对象
     91     CALayer *myLayer = [CALayer layer];
     92     //设置相关的位置和大小
     93     myLayer.bounds = CGRectMake(0, 0, 100, 100);
     94     //设置背景颜色
     95     myLayer.backgroundColor = [UIColor redColor].CGColor;
     96     //设置一个锚点
     97     myLayer.anchorPoint = CGPointMake(0, 0);
     98     //设置锚点的位置
     99     myLayer.position = CGPointMake(100, 100);
    100     //添加到父视图的layer
    101     [self.view.layer addSublayer:myLayer];
    102 
    103 }
    104 - (IBAction)animationGroup:(UIButton *)sender {
    105     //平移动画
    106     CABasicAnimation *basc1 = [CABasicAnimation animation];
    107     basc1.keyPath = @"transform.translation.y";
    108     basc1.toValue = @(400);
    109     
    110     //翻转动画(缩放)
    111     CABasicAnimation *basc2 = [CABasicAnimation animation];
    112     basc2.keyPath = @"transform.scale";
    113     basc2.toValue = @(0.2);
    114     
    115     //旋转动画
    116     CABasicAnimation *basic3 = [CABasicAnimation animation];
    117     basic3.keyPath = @"transform.rotation";
    118     basic3.toValue = @(M_PI_2);
    119     
    120     //需要创建存放以上三种动画的动画组
    121     CAAnimationGroup *animationGroup = [CAAnimationGroup animation];
    122     
    123     animationGroup.animations = @[basc1,basc2,basic3];
    124     
    125     animationGroup.duration = 3.0;
    126     
    127     [self.imageView.layer addAnimation:animationGroup forKey:@"animationGroup"];
    128 }
    129 #pragma mark - CATransition动画
    130 - (IBAction)translationAnimation:(UIButton *)sender {
    131     //创建动画对象
    132     CATransition *transition = [CATransition animation];
    133     transition.type = @"cube";
    134     transition.subtype =  kCATransitionFade;
    135     transition.duration = 1;
    136     [self.imageView.layer addAnimation:transition forKey:@"transition"];
    137 }
    138 #pragma spring
    139 
    140 - (IBAction)spring:(UIButton *)sender {
    141     //创建动画对象
    142     CASpringAnimation *spring = [CASpringAnimation animation];
    143     spring.keyPath = @"transform.scale";
    144     spring.fromValue = @1;
    145     spring.toValue = @0.75;
    146     spring.duration = 3;
    147     [self.imageView.layer addAnimation:spring forKey:@"spring"];
    148     
    149 }
    150 
    151 - (void)didReceiveMemoryWarning {
    152     [super didReceiveMemoryWarning];
    153     // Dispose of any resources that can be recreated.
    154 }
    155 
    156 @end
  • 相关阅读:
    C#枚举(一)使用总结以及扩展类分享
    .NET使用DinkToPdf将HTML转成PDF
    .NET使用MailKit进行邮件处理
    socket+django
    mysql 修改编码格式
    django中Model表的反向查询
    浅谈 session 会话的原理
    浅谈 django Models中的跨表
    django Models 常用的字段和参数
    encoding/xml
  • 原文地址:https://www.cnblogs.com/DevinSMR/p/5342533.html
Copyright © 2011-2022 走看看