0
votes

I am rotating my view using UIRotationGestureRecognizer, But after taht when i want to increase or decrease my view size using UISlider. My view angle first setting to its initial state the it is increasing or decreasing my view size. My requirement is if my view rotated by some angle it still rotated after performing UISlider operation.

My Rotation Gesture Code:

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

My UISlider Code

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

1 Answers

0
votes

If you want to keep the rotation, you'll have to store that CGAffineTransform and then concatinate it with your scale transform. You can use CGAffineTransformConcat for that (https://developer.apple.com/documentation/coregraphics/1455996-cgaffinetransformconcat?language=objc). Something like this:

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

where savedRotationTransform is CGAffineTransformRotate(gesture.view.transform, gesture.rotation); saved from that other step. It might be easier to encapsulate the whole thing in your UIView subclass.