【问题标题】:Reseting rotation of UIView to 0将 UIView 的旋转重置为 0
【发布时间】:2012-10-17 12:38:08
【问题描述】:

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

我不能使用:

[myView setTransform:CGAffineTransformIdentity]

因为它也会休息所有其他转换。

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

【问题讨论】:

    标签: ios uiview frame cgaffinetransform


    【解决方案1】:
    myView.transform = CGAffineTransformRotate(myView.transform, -currentRotationAngle);
    

    这将采用当前变换,并将其旋转到 0 度

    编辑:我认为您需要按当前旋转值的倒数旋转,而不仅仅是将其设置为 0

    【讨论】:

    • CGAffineTransformRotate 在这里没有帮助,因为它将该角度的旋转应用于现有旋转。
    • 如果您传入例如,它不会将旋转归零吗? -M_PI_2 如果当前轮换是 M_PI_2?
    • 当然可以,但是您必须知道当前的轮播才能像那样重置它。
    【解决方案2】:

    要在保持过渡的同时重置旋转,您可以尝试以下代码:

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

    【讨论】:

      猜你喜欢
      • 2011-09-06
      • 1970-01-01
      • 2018-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多