如何使用TouchesMoved旋转UIImageView

Abd*_*ari -1 uiimageview ios swift

我正在尝试UIImageView使用Touch事件旋转一个图像,我想用手指旋转图像,我想要这样做:dropbox链接(最好看一下,所以你明白我的意思了)

在研究了如何旋转UIImageView之后:如何将UIImageView旋转20度。我已经用开发iPhone应用程序的简单方法尝试了以下代码:

class ViewController: UIViewController {

    var startpoint:CGPoint!
    var endpoint:CGPoint!

    @IBOutlet var yello:UIImageView

    override func touchesMoved(touches: NSSet!, withEvent event: UIEvent!) {

        let t:UITouch = touches.anyObject() as UITouch
        startpoint = t.locationInView(self.view)
        endpoint = t.previousLocationInView(self.view)

        if t.view == yello {
            var startX = startpoint.x
            var endX = endpoint.x
            yello.center = CGPointMake(yello.center.x, yello.center.y)
            UIView.animateWithDuration(1, animations: { self.yello.transform = CGAffineTransformMakeRotation(startX-endX)})
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以清楚地看到我的代码有很多错误和不良做法,并且也无法正常运行。(请参见上方的保管箱链接)

因此,也许有更好的方法可以通过使用CoreAnimation来做到这一点,如果代码示例可以实现我想要的效果,我将不胜感激。

Epi*_*yte 5

我只是写了这么快。我认为这就是您要寻找的。我没有使用图像,而是使用了彩色视图,但是您可以轻松地用图像替换它。您可能想要检测是否拖动了视图,以便用户必须按顺序拖动视图才能旋转,因为当前用户可以拖动任何位置以旋转视图。(下面的代码现在检查这种情况)如果您对此有任何疑问,请告诉我。

 class ViewController: UIViewController {
    var myView: UIView!
    override func viewDidLoad() {
        super.viewDidLoad()
        myView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 20))
        myView.center = self.view.center
        myView.backgroundColor = UIColor.redColor()
        self.view.addSubview(myView)
        myView.layer.anchorPoint = CGPoint(x: 1.0, y: 0.5)

        let box = UIView(frame: CGRect(x: 0, y: 0, width: 20, height: 20))
        box.backgroundColor = UIColor.blueColor()
        myView.addSubview(box)
    }
    override func touchesMoved(touches: NSSet!, withEvent event: UIEvent!) {
        let touch = touches.anyObject() as UITouch
        if touch.view === myView.subviews[0] {
        let position = touch.locationInView(self.view)
        let target = myView.center
        let angle = atan2(target.y-position.y, target.x-position.x)
        myView.transform = CGAffineTransformMakeRotation(angle)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明