2017-05-25 50 views
0

我正在使用旋轉手勢識別器來旋轉UIView。在我旋轉了視圖後,平移手勢的x和y座標離開了它們的座標軸,我看不出爲什麼。快速旋轉手勢x和y離軸問題

這裏是我當前的手勢設置:

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) 

} 

所以,當我旋轉的UIView x和y平移是關閉(向上移動取決於UIView的的移動的UIView向左或向右轉動的狀態)。

感謝

+0

嘗試設置您的視圖的錨點先做旋轉前嘗試這種'view.layer。 anchorPoint = CGPoint.init(x:0.5,y:0.5)' ' – Bilal

+0

沒有用@Bilal – user7684436

回答

0

有相當多的與所提供的代碼示例來解壓,但對於初學者拖動處理程序設置視圖,這可能是一個提示,爲什麼旋轉手勢是歪的中心點。

而不是在每個處理程序中獨立設置視圖的transform屬性,如果您修改現有轉換,則可能會得到您要查找的結果。

的SO回答here進入多一點深度,可以幫助:

Using multiple UIGestureRecognizers simultaneously like UIRotationGestureRecognizer & UIPanGestureRecognizer in Swift 3