2017-05-25 1 views
0

J'utilise un outil de reconnaissance de mouvement rotatif pour faire pivoter un UIView. Après avoir fait pivoter la vue, les coordonnées x et y du mouvement de panoramique sont hors de leur axe et je ne vois pas pourquoi.Problème de rotation rapide x et y hors axe

Voici ma configuration actuelle geste:

open func handleRotate(sender: UIRotationGestureRecognizer) { 
    if sender.state == .began || sender.state == .changed { 

     sender.view?.transform = (sender.view?.transform)!.rotated(by: sender.rotation) 
     sender.rotation = 0 
    } 
} 
@objc fileprivate func handleDrag(sender: UIPanGestureRecognizer) { 

    let translation = sender.translation(in: self) 

    sender.view!.center = CGPoint(x: sender.view!.center.x + translation.x, y: sender.view!.center.y + translation.y) 
    sender.setTranslation(.zero, in: self) 

} 

Alors, quand je tourne la UIView x et balayage panoramique y sont impures (Progresser déplace le UIView à gauche ou à droite en fonction de l'état rotation de UIView).

Merci

+0

essayer le réglage du point de vue d'ancrage avant de faire la rotation ... essayez ceci 'view.layer. anchorPoint = CGPoint.init (x: 0.5, y: 0.5) ' ' – Bilal

+0

Cela n'a pas fonctionné @Bilal – user7684436

Répondre

0

Il y a beaucoup de choses à déballer avec l'exemple de code fourni, mais pour commencer le gestionnaire de glisser est le réglage du point central de la vue, ce qui pourrait être une indication quant à la raison pour laquelle le mouvement de rotation est guingois. Plutôt que de définir indépendamment la propriété transform de la vue dans chaque gestionnaire, vous obtiendrez peut-être le résultat recherché si vous modifiez les transformations existantes.

La SO répondre here va dans un peu plus en profondeur, et peut aider:

Using multiple UIGestureRecognizers simultaneously like UIRotationGestureRecognizer & UIPanGestureRecognizer in Swift 3