拖动时旋转UIView

时间:2013-09-03 19:07:15

标签: iphone ios objective-c rotation uigesturerecognizer

使用UIPanGestureRecognizer,我允许用户拖动UIView。我现在想要完成的是让视图在拖动过程中围绕指定点调整其旋转。

此示例可以在Tinder App中找到(当拖动图像时图像略微旋转)或在路径应用程序中(当向上或向下拖动朋友弹出窗口时,它会旋转到抓住的一侧)。

3 个答案:

答案 0 :(得分:0)

我必须承认,我在使用UIPanGestureRecognizer方面的经验很少,但我认为它不会影响答案。

然而,一个解决方案可能是创建一个计时器并使其在拖动UIView时运行,然后计时器操作将确保正确地更新UIView的旋转并且经常更新可能的。

另一个解决方案可能是子类UIView并覆盖拖动函数(我不知道它叫什么),如果有任何轴点,只需让它自动调整它的旋转。

答案 1 :(得分:0)

使用以下方法进行旋转

- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    self.yourView.transform = CGAffineTransformMakeRotation(CGFloat angle);
}

答案 2 :(得分:0)

使用 CATransform3D

添加

#define DEGREES_TO_RADIANS(d) (d * M_PI / 180)

在.pch文件中

CATransform3D myTransform = CATransform3DIdentity;
myTransform.m34 = 1.0 / -500;
myTransform = CATransform3DRotate(myTransform, DEGREES_TO_RADIANS(90), 0.0f, 0.0f, 1.0f);
myView.layer.transform = myTransform;

你可以继续改变这里的角度DEGREES_TO_RADIANS(90)希望这会对你有所帮助