要使用UISlider增加视图大小时,将CGAffineTransformRotate设置为其初始状态

时间:2019-07-06 05:59:49

标签: ios objective-c xcode core-graphics cgaffinetransform

我正在使用UIRotationGestureRecognizer旋转视图,但是当我想使用UISlider增大或减小视图大小时。我的视角首先设置为其初始状态,即正在增加或减小我的视角大小。我的要求是,在执行UISlider操作后,如果视图旋转了一定角度,它仍然旋转了。

我的旋转手势代码:

gesture.view.transform = CGAffineTransformRotate(gesture.view.transform, gesture.rotation);
gesture.rotation = 0.0;

我的UISlider代码

myView.transform = CGAffineTransformScale(CGAffineTransformIdentity, slider.value * 2, slider.value * 2);

1 个答案:

答案 0 :(得分:0)

如果要保持旋转,则必须存储该CGAffineTransform,然后使用比例转换对其进行隐化。您可以为此使用CGAffineTransformConcathttps://developer.apple.com/documentation/coregraphics/1455996-cgaffinetransformconcat?language=objc)。像这样:

CGAffineTransform scale = CGAffineTransformScale(CGAffineTransformIdentity, slider.value * 2, slider.value * 2);
myView.transform = CGAffineTransformConcat(savedRotationTransform,  scale);

其中savedRotationTransform是从另一步骤保存的CGAffineTransformRotate(gesture.view.transform, gesture.rotation);。将整个内容封装在您的UIView子类中可能会更容易。