CGAffineTransformRotate устанавливается в исходное состояние, когда вы хотите увеличить размер представления с помощью UISlider - PullRequest
0 голосов
/ 06 июля 2019

Я вращаю свой вид с помощью 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 голосов
/ 07 июля 2019

Если вы хотите сохранить вращение, вам нужно сохранить это CGAffineTransform, а затем объединить его с вашим масштабным преобразованием.Вы можете использовать CGAffineTransformConcat для этого (https://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 подклассе.

...