使用CGAffineTransformMakeRotation旋转后视图会变形,这是什么原因,要如何处理呢?

CGFloat angle = 10 * M_PI / 180.f;
view.transform = CGAffineTransformMakeRotation(angle);

图片描述

图片描述

阅读 5.1k
1 个回答

我改为view.layer.transform = CATransform3DMakeRotation(angle, 0, 0, 1)去测试,发现只有相对于z轴旋转时有问题,看起来不像是绕z轴旋转

如果使用动画的方式来进行旋转就没有问题!!

CABasicAnimation *circleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
view.duration = 0;
view.repeatCount = 1;
view.toValue = @(angle);
view.removedOnCompletion = NO;
view.fillMode = kCAFillModeForwards;
[view.layer addAnimation:circleAnimation forKey:@"rotation"];

原因是使用CATransform3DMakeRotation后修改了坐标系,那么接下来是不能够在此设置其所在视图的frame的。这里我多次设置了其frame所以导致该问题

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题