【问题标题】:Rotate Image on Slider Value in iOS在iOS中的滑块值上旋转图像
【发布时间】:2013-04-16 10:33:22
【问题描述】:

我正在旋转滑块值上的图像 -

我正在使用此代码进行旋转 -

editingView.transform = CGAffineTransformRotate(editingView.transform,sliderVal);

它的旋转正常,但如果我在旋转后尝试移动或调整大小,editingView 正在调整大小,出现意外行为,视图从屏幕上消失。

请告诉我我做错了什么。

【问题讨论】:

    标签: ios objective-c image image-rotation


    【解决方案1】:

    好吧,每当您旋转超级视图内的视图时,您都应该保留视图的位置。如果您没有在原点上旋转任何视图,则应首先将视图的原点转换为父视图的原点,然后旋转,然后再次转换回原点。

    • 如果要相对于其父视图旋转视图,请查找坐标,例如 (x,y)。
    • 将视图转换为原点;

      view.transform = CGAffineTransformMakeTranslation(x,y)

    • 将视图旋转某个角度,例如 PI,

      view.transform = CGAffineTransformMakeRotation(PI)

    • 旋转后平移回原点为;

      view.transform = CGAffineTransformMakeTranslation(-x,-y)

    就是这样。它应该适用于所有不同的旋转。

    【讨论】:

    • 这解决了我在旋转后调整大小和移动但它停止旋转,只是闪烁视图的问题。
    【解决方案2】:

    看看this question

    由于您没有显示任何有关如何移动或调整大小的代码,我怀疑您没有正确连接转换。此外,在您进行旋转后,可能会在旋转后的坐标系上进行平移,从而导致意外行为。

    【讨论】:

      【解决方案3】:

      更改 transform 值会影响 UIView 的 frame 值。正如苹果所说:

      警告:如果此属性不是恒等变换,则 frame 属性未定义,因此应被忽略。

      Apple docs

      因此,如果您正在使用 frame 属性移动或调整视图大小,请尝试使用 boundscenter 属性执行此操作

      【讨论】:

        猜你喜欢
        • 2017-04-22
        • 1970-01-01
        • 1970-01-01
        • 2016-12-08
        • 2020-03-29
        • 2014-09-07
        • 2019-11-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多