簡體   English   中英

平移姿勢基於旋轉弄亂了方向

[英]Pan gesture messes up direction based on rotation

我的手勢識別器有一個小問題。

我有一個名為“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類中而不是ViewController中(如果可能)。 謝謝。

而不是translationInView:self,嘗試translateInView:self.superview。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM