gpt4 book ai didi

iphone - 平移手势弄乱了基于旋转的方向

转载 作者:技术小花猫 更新时间:2023-10-29 11:18:21 27 4
gpt4 key购买 nike

我的手势识别器有一个小问题。

我有一个名为“Sprite”的类,它只是一个 UIImageView。 Sprite 有自己的手势识别器和处理方法,因此用户可以平移、旋转和调整图形大小。

这是我的代码:

    -(void)setup{ //sets up the imageview...
//add the image, frame, etc.
UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinch:)];
UIRotationGestureRecognizer *rotateGesture = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(handleRotate:)];

[self addGestureRecognizer:panGesture];
[self addGestureRecognizer:pinchGesture];
[self addGestureRecognizer:rotateGesture];
}

//handling methods
-(void)handlePinch:(UIPinchGestureRecognizer *)recognizer{
recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale);
recognizer.scale = 1;
}

-(void)handleRotate:(UIRotationGestureRecognizer *)recognizer{
recognizer.view.transform = CGAffineTransformRotate(recognizer.view.transform, recognizer.rotation);
recognizer.rotation = 0;
}
-(void)handlePan:(UIPanGestureRecognizer *)recognizer{
CGPoint translation = [recognizer translationInView:self];
recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, recognizer.view.center.y + translation.y);
[recognizer setTranslation:CGPointMake(0, 0) inView:self]
}

所以基本上他们每个人都可以自己工作。但是,当我旋转或调整 imageView 大小时,平移就会出现问题。例如,如果您将 imageView 上下颠倒旋转,则平移手势将在相反方向移动图像(向上是向下,向左拖动将其向右移动,等等)。同样,调整大小的 Sprite 将不会以与以前相同的速度/距离平移。

关于如何解决这个问题的任何想法?我宁愿将此代码保留在 Sprite 类中而不是 ViewController 中(如果可能)。谢谢。

最佳答案

尝试使用 translationInView:self.superview 代替 translationInView:self。

关于iphone - 平移手势弄乱了基于旋转的方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8781885/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com