我正在使用SliderResizeRotate-

对于旋转-

 CGAffineTransform transform = editingView.transform;
  transform =  CGAffineTransformMakeRotation(sliderVal * 2*M_PI / 30);
  editingView.transform = transform;

对于调整大小-
CGAffineTransform t = CGAffineTransformMakeScale(sliderVal/30, sliderVal/30);
  CGPoint center = editingView.center;
  [UIView animateWithDuration:0.5
                   animations:^{
                      editingView.transform = t;
                     editingView.center = center;
                   }
                   completion:^(BOOL finished) {

                   }];

使用上面的代码,两者都可以正常工作。

但是我必须对旋转后的视图resize,或者旋转调整后的视图。

我看到很多建议来自不同的行为,因为我正在使用CGAffineTransformMakeRotationCGAffineTransformMakeScale,如果我使用CGAffineTransformScaleCGAffineTransformRotation,那么我的问题将得到解决。

问题是当我使用CGAffineTransform时,缩放比例不合适,View从屏幕上消失了。

最佳答案

您正在使用editingView.transform行设置视图的转换矩阵。

您应该更改代码以进行轮换:

CGAffineTransform transform = editingView.transform;
transform =  CGAffineTransformMakeRotation(sliderVal * 2*M_PI / 30);
editingView.transform = CGAffineTransformConcat(editingView.transform, transform);

并调整大小:
CGAffineTransform t = CGAffineTransformMakeScale(sliderVal/30, sliderVal/30);
CGPoint center = editingView.center;
[UIView animateWithDuration:0.5
                   animations:^{
                      editingView.transform = CGAffineTransformConcat(editingView.transform,t);
                      editingView.center = center;
                   }
                   completion:^(BOOL finished) {

                   }];

使用CGAffineTransformConcat,您可以将2个变换矩阵加在一起,这样就不会丢失较旧的变换。您可以使用CGAffineTransformIdentity重置转换。

10-08 07:02
查看更多