0

私は問題があります。ジェスチャーによって制御される uiview があります (水平に移動できます)。この uiview は小さいですが、すべて問題ありません。

CGAffineTransformScale を使用してスケーリングした後、奇妙さが始まります。より大きな状態では、PAN が動作する前に 1.5 cm の範囲で指を動かすことができます。その後、すべてが機能しますが (UIView は指でドラッグします)、あまりスムーズではありません。

ビューでCGAffineTransformScaleの後に何かが増えたと思いますが、それがジェスチャーを担当しています。ビューを元に戻すと、ジェスチャが正常に機能し始めます。

助けてください!ありがとうございました!

// 遷移

[UIView transitionWithView:pagesView   
                  duration:0.25  
                   options:UIViewAnimationOptionCurveEaseOut + UIViewAnimationOptionAllowUserInteraction + UIViewAnimationOptionBeginFromCurrentState
                animations:^{

                    pagesView.transform = CGAffineTransformScale(pagesView.transform, kResize, kResize);

                }   
                completion:^(BOOL finished){


                }];
4

1 に答える 1

2

パン ジェスチャ レコグナイザーにビューでの平行移動を要求し、ビューが本来のサイズの 2 倍にスケーリングされている場合、指の動きを 2 で割って平行移動を計算します。おそらくそれはあなたが望むものではありません。

拡大縮小されていないビューでの翻訳について、パン ジェスチャ レコグナイザーに問い合わせます。スケーリングされたビューには、変換されていないスーパービューがあると思います。これをジェスチャ認識エンジンのアクションとして使用してみてください。

- (IBAction)pan:(UIPanGestureRecognizer *)panner {
    UIGestureRecognizerState state = panner.state;
    if (state != UIGestureRecognizerStateChanged && state != UIGestureRecognizerStateEnded)
        return;
    UIView *movingView = panner.view;
    UIView *referenceView = movingView.superview;
    CGPoint offset = [panner translationInView:referenceView];
    [panner setTranslation:CGPointZero inView:referenceView];
    CGPoint center = movingView.center;
    center.x += offset.x;
    center.y += offset.y;
    movingView.center = center;
}
于 2012-06-17T19:07:35.463 に答える