我正在使用Slider
到Resize
和Rotate
-
对于旋转-
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
,或者旋转调整后的视图。我看到很多建议来自不同的行为,因为我正在使用
CGAffineTransformMakeRotation
,CGAffineTransformMakeScale
,如果我使用CGAffineTransformScale
,CGAffineTransformRotation
,那么我的问题将得到解决。问题是当我使用
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
重置转换。