Ios 使用UIPinchGestureRecognizer沿一个方向缩放UIView
在我的应用程序中,我有一个可拖动的Ios 使用UIPinchGestureRecognizer沿一个方向缩放UIView,ios,swift,uigesturerecognizer,uipinchgesturerecognizer,Ios,Swift,Uigesturerecognizer,Uipinchgesturerecognizer,在我的应用程序中,我有一个可拖动的UIView,我在其中添加了一个uipinchgeturerecognizer。在本教程之后,默认情况下,将沿x和y方向缩放视图。是否可以只用一个手指沿一个方向缩放?我的意思是,例如,我像往常一样用拇指和食指轻触UIView,但当我握住拇指时,我只能朝一个方向移动食指,然后UIView应该根据食指移动的方向沿该维度缩放 实际上,我通过向我的UIView添加pin实现了这一点,如下所示: 我只是在想,我的应用程序可能会更好地使用uipinchgestrereco
UIView
,我在其中添加了一个uipinchgeturerecognizer
。在本教程之后,默认情况下,将沿x和y方向缩放视图。是否可以只用一个手指沿一个方向缩放?我的意思是,例如,我像往常一样用拇指和食指轻触UIView
,但当我握住拇指时,我只能朝一个方向移动食指,然后UIView
应该根据食指移动的方向沿该维度缩放
实际上,我通过向我的UIView
添加pin实现了这一点,如下所示:
我只是在想,我的应用程序可能会更好地使用uipinchgestrerecognizer
我希望我已经解释过了,如果您有一些提示、教程或文档可以链接到我,我将非常感激。在
cAffineTransformScale(view.transform,recognizer.scale,recognizer.scale)
中使用recognizer.scale
只更新一个轴:X或Y,并保留另一个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
}
}
enum轴{
案例十
案例Y
}
func axisFromPoints(p1:CGPoint,p2:CGPoint)->Axis{
设absolutePoint=CGPointMake(p2.x-p1.x,p2.y-p1.y)
设弧度=atan2(双精度(绝对点x),双精度(绝对点y))
设absRad=fabs(弧度)
如果absRad>M_PI_4&&absRad<3*M_PI_4{
return.X
}否则{
返回
}
}
是的,但要做到这一点,我还应该知道食指(拇指仍然)朝哪个方向移动……例如,如果食指朝右移动,我应该增加x,如果它朝左移动,我应该减少x。。。你明白我的意思吗?我刚刚读了你的更新…听起来很有趣。请你说得更具体些好吗?