Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用UIPinchGestureRecognizer沿一个方向缩放UIView_Ios_Swift_Uigesturerecognizer_Uipinchgesturerecognizer - Fatal编程技术网

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。。。你明白我的意思吗?我刚刚读了你的更新…听起来很有趣。请你说得更具体些好吗?