美文网首页iOS Developer
layer 和Core Animation

layer 和Core Animation

作者: 木语先生 | 来源:发表于2016-03-03 19:13 被阅读103次

    layer的基本属性

    1>边框

    redView.layer.borderWidth = 10; // 边框的宽度

    redView.layer.borderColor = [UIColor whiteColor].CGColor; // 边框的颜色

    2>阴影

    redView.layer.shadowOffset = CGSizeMake(50, 50); // 偏移量

    redView.layer.shadowColor = [UIColor blueColor].CGColor; // 颜色

    redView.layer.shadowOpacity = 1; // 透明度 (如果要显示 一定要加)

    redView.layer.shadowRadius = 50; // 阴影的圆角半径

    3>圆角

    redView.layer.cornerRadius = 50;

    redView.layer.masksToBounds = YES;

    4>bounds

    redView.layer.bounds = CGRectMake(0, 0, 200, 200);

    5>postion属性和view.center的关系 默认

    redView.layer.position = CGPointMake(100, 100);

    6>设置内容(图片)

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

    -------------如何禁用隐式动画-------------

    [CATransaction begin]; // 开启事务

    [CATransaction setDisableActions:YES]; // 禁用隐式动画

    // 设置红色的layer 跑到手指的位置上

    self.layer.position = p;

    [CATransaction commit]; // 提交事务

    -------------核心动画---------------

    ------------基础动画-------------------

    CABasicAnimation *basic = [[CABasicAnimation alloc]init];

    //操作

    basic.keyPath = @"position.x";

    basic.fromValue = @(10);//从哪开始

    basic.toValue = @(300);//到哪结束

    basic.byValue = @(30);//在自身的基础上增加10

    //不希望核心动画回到原来的位置

    basic.fillMode = kCAFillModeForwards;

    basic.removedOnCompletion = NO;

    [self.layer addAnimation:basic forKey:nil];

    //第二种关键字

    ani.keyPath = @"transform.rotation";

    ani.byValue = @(2*M_PI);

    --------------关键帧动画-----------------

    CAKeyframeAnimation *ani = [[CAKeyframeAnimation alloc]init];

    ani.keyPath = @"position";

    UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(100, 100) radius:80 startAngle:0 endAngle:2*M_PI clockwise:1];

    ani.path = path.CGPath;

    ani.duration = 3;

    ani.repeatCount = INT_MAX;

    [self.layer addAnimation:ani forKey:nil]

    //图标抖动的方案解决

    ani.keyPath = @"transform.rotation";

    ani.valus = @[@(M_PI_4),@(-,_PI_4),@(M_PI_4)];

    ```

    -----------------组动画----------------

    //创建组动画

    CAKeyframeAnimation* anim = [[CAKeyframeAnimation alloc] init];

    //添加动画

    group.animations = @[ anim, anim1 ];

    // 设置事件

    group.duration = 3;

    // 设置次数

    group.repeatCount = INT_MAX;

    // 3.添加动画到layer上

    [self.layer addAnimation:group forKey:nil];

    -----------------转场动画type关键字---------------

    * fade 交叉淡化过渡

    * push 新视图把旧视图推出去

    * moveIn 新视图移到旧视图上面

    * reveal 将旧视图移开,显示下面的新视图

    * cube 立方体翻滚效果

    * oglFlip 上下左右翻转效果

    * suckEffect 收缩效果,如一块布被抽走

    * rippleEffect 水滴效果

    * pageCurl 向上翻页效果

    * pageUnCurl 向下翻页效果

    * cameraIrisHollowOpen 相机镜头打开效果

    * cameraIrisHollowClose 相机镜头关闭效果

    相关文章

      网友评论

        本文标题:layer 和Core Animation

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