iOS Swift:CGAffineTransformMakeRotation在语言之间重置

时间:2015-11-18 17:47:18

标签: ios swift core-animation cgaffinetransform

我使用UIRotationGestureRecognizer来旋转视图。当我释放视图,然后重新开始时,它会在返回旋转之前捕捉到Identity旋转。我正试图弄清楚如何让它顺利地继续下一个旋转事件。我能找到的唯一一个问题,就是在这里,几年前没有得到答案。

我可以从Obj-C移植,如果有人更舒服地回答这个问题。

我确信我错过了一些明显的东西,但你是我唯一的希望,Obi Wan Stackoverflow。

func rotateToRotate(rotationRecognizer: UIRotationGestureRecognizer) {
    let rotation = rotationRecognizer.rotation
    if rotationRecognizer.state == UIGestureRecognizerState.Began {
        self.view.transform = CGAffineTransformMakeRotation(0 + self.lastRotation)
        return
    }

    if rotationRecognizer.state == UIGestureRecognizerState.Ended {
        self.view.transform = CGAffineTransformMakeRotation(rotation)
        self.lastRotation = rotation
        return
    }

    self.view.transform = CGAffineTransformMakeRotation(rotation)
}

1 个答案:

答案 0 :(得分:0)

原来,自动完成程序让我绊倒了。 CGAffineTransformMakeRotation CGAffineTransformRotate不同。前者不会改变CGAffineTransformIdentity,后者会改变。{/ p>

更正后的代码:

func rotateToRotate(rotationRecognizer: UIRotationGestureRecognizer) {
    let rotation = rotationRecognizer.rotation
    self.view.transform = CGAffineTransformRotate(self.view.transform, rotation)
    rotationRecognizer.rotation = 0.0
}