//第一种 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) { }];