当想要使用Uislider增加视图大小时,CGAFFINETRANSFORTATE设置为初始状态



我正在使用uirotation gastureregognizer旋转我的视图,但是当我想使用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);

如果要保持旋转,则必须存储该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子类中可能会更容易。

最新更新