2012-10-17 41 views
0

如何将我的视图的旋转重置为零,同时保持该视图上的其他转换不变。将UIView的旋转重置为0

我不能使用:

[myView setTransform:CGAffineTransformIdentity]

,因为它会休息,其他所有的变换过。

或者,我只是想视图的框架,如果它的旋转为0

回答

1
myView.transform = CGAffineTransformRotate(myView.transform, -currentRotationAngle); 

这需要当前变换,并将其旋转到0度

编辑:我想你会需要通过当前的旋转值的逆旋转,而不仅仅是将其设置为0

+0

'CGAffineTransformRotate'在这里没有帮助,因为它将该角度的旋转应用于现有旋转。 –

+0

是否它不会将旋转返回到零,如果您通过例如-M_PI_2如果当前旋转是M_PI_2? – wattson12

+0

当然,但你必须知道当前的旋转,以便像这样重置它。 –

0

要重新转动,同时保持过渡,你可以试试这个代码:

CGAffineTransform inverse = CGAffineTransformInvert(myView.affineTransform); 
    inverse.tx = 0; 
    inverse.ty = 0; 
    myView.transform = inverse;