我正在使用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
子类中可能会更容易。