2015-12-16 28 views
4

在我的應用程序中,我有一個可拖動的UIView,我已添加UIPinchGestureRecognizer。在this教程之後,默認情況下視圖沿着x和y方向縮放。用一根手指只能沿一個方向縮放嗎?我的意思是,例如,我一如既往地用拇指和食指點按UIView,但在握住拇指的同時,我只能沿一個方向移動食指,然後沿着該尺寸根據方向指數移動。使用UIPinchGestureRecognizer沿一個方向縮放UIView

實際上,我已經加入引腳我UIView像下面這樣實現的:

enter image description here

我只是在想我的應用程序可能會使用UIPinchGestureRecognizer更好的利用。

我希望我已經解釋了我自己,如果您有一些提示或教程或文檔鏈接到我,我將非常感激。

回答

5

CGAffineTransformScale(view.transform, recognizer.scale, recognizer.scale)更新一個座標軸:X或Y與recognizer.scale並保留另外一個1.0f

CGAffineTransformMakeScale(CGFloat sx, CGFloat sy) 

爲了知道哪些軸應該擴展,你需要做一些數學,看之間的夾角手勢的兩個手指並基於角度來決定哪個軸縮放。

也許像

enum Axis { 
    case X 
    case Y 
} 

func axisFromPoints(p1: CGPoint, _ p2: CGPoint) -> Axis { 
    let absolutePoint = CGPointMake(p2.x - p1.x, p2.y - p1.y) 
    let radians = atan2(Double(absolutePoint.x), Double(absolutePoint.y)) 

    let absRad = fabs(radians) 

    if absRad > M_PI_4 && absRad < 3*M_PI_4 { 
     return .X 
    } else { 
     return .Y 
    } 
} 
+1

有,但要做到這一點我也應該知道食指(拇指仍然是)朝...移動的方向,例如,如果食指向右移動我應該增加x,如果它向左移動,我應該減少x ...你明白我的意思嗎? –

+1

我剛剛閱讀您的更新...這聽起來很有趣。請,你會更具體/清楚嗎? –

相關問題