美文网首页动画设计学习iOS Developer
ios layer 动画(x/y/z轴 旋转)

ios layer 动画(x/y/z轴 旋转)

作者: 丸_子 | 来源:发表于2016-12-17 15:36 被阅读186次

    x轴旋转:

    //第一种
    CABasicAnimation *theAnimation;
    theAnimation=[CABasicAnimation animationWithKeyPath:@"transform.rotation.x"];
    theAnimation.duration=8;
    theAnimation.removedOnCompletion = YES;
    theAnimation.fromValue = [NSNumber numberWithFloat:0];
    theAnimation.toValue = [NSNumber numberWithFloat:3.1415926];
     [yourView.layer addAnimation:theAnimation forKey:@"animateTransform"];
    
    //第二种
        [UIView animateWithDuration:1 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{
            view.transform = CGAffineTransformMakeScale(-1.0, 1.0);
        } completion:^(BOOL finished) {
            //还原回来
            //view.transform = CGAffineTransformMakeScale(1.0, 1.0);
        }];
    

    y轴旋转:

    CABasicAnimation *theAnimation;
    theAnimation=[CABasicAnimation animationWithKeyPath:@"transform.rotation.y"];
    theAnimation.duration=8;
    theAnimation.removedOnCompletion = YES;
    theAnimation.fromValue = [NSNumber numberWithFloat:0];
    theAnimation.toValue = [NSNumber numberWithFloat:3.1415926];
     [yourView.layer addAnimation:theAnimation forKey:@"animateTransform"];
    

    z轴旋转:

    CABasicAnimation *theAnimation;
    theAnimation=[CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
    theAnimation.duration=8;
    theAnimation.removedOnCompletion = YES;
    theAnimation.fromValue = [NSNumber numberWithFloat:0];
    theAnimation.toValue = [NSNumber numberWithFloat:3.1415926];
     [yourView.layer addAnimation:theAnimation forKey:@"animateTransform"];
    

    以上缩放是以view的中心点为中心缩放的,如果需要自定义缩放点,可以设置卯点:

    //中心点
    [yourView.layer setAnchorPoint:CGPointMake(0.5, 0.5)];
    
    //左上角
    [yourView.layer setAnchorPoint:CGPointMake(0, 0)];
    
    //右下角
    [yourView.layer setAnchorPoint:CGPointMake(1, 1)];
    

    可设参数

    theAnimation.repeatCount = 0;
    theAnimation.autoreverses = NO;
    

    旋转的另一种实现:(以下代码绕z轴旋转180度)

        [self.topViewController.view.layer setAnchorPoint:CGPointMake(0.5, 0.5)];
        [self.topViewController.view.layer setTransform:CATransform3DMakeRotation(0, 0, 0, 1)];
        [UIView animateWithDuration:8 delay:0.0f options:UIViewAnimationOptionAllowUserInteraction | UIViewAnimationCurveEaseIn animations:^{
            [self.topViewController.view.layer setTransform:CATransform3DMakeRotation(3.1415926, 0, 0, 1)];
        } completion:^(BOOL finished) {
        }];
    

    相关文章

      网友评论

        本文标题:ios layer 动画(x/y/z轴 旋转)

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