0

経由で画像をつまんでみようとしてUIPinchGestureRecognizerいますが、問題はコードが正しく機能せず、実際には画像をズームできなかったことです。

-(void) pinching: (UIPinchGestureRecognizer *) sender {

    CGAffineTransform myTransformation =
    CGAffineTransformMakeScale(sender.scale, sender.scale);
    sender.view.transform = myTransformation;
}


- (void)viewDidLoad
{
  UIPinchGestureRecognizer *pinch =
    [[UIPinchGestureRecognizer alloc]
     initWithTarget:self
     action:@selector(pinching:)];

    pinch.delegate = self;

    [imageBG addGestureRecognizer:pinch];

    [imageBG setUserInteractionEnabled:YES];
    [imageBG setMultipleTouchEnabled:YES];
}
4

3 に答える 3

1

.h以下のようにファイル内の変数を1つ取得するだけです。

CGFloat lastScale;

このタイプのコードを使用してください...

メソッドにviewWillAppear:追加するだけです。

- (void)viewWillAppear:(BOOL)animated
{
     UIPinchGestureRecognizer *pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scale:)];
        [pinchRecognizer setDelegate:self];
        [yourImageView addGestureRecognizer:pinchRecognizer];
}

-(void)scale:(id)sender {
    if([(UIPinchGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded) {

            lastScale = 1.0;
            return;
        }

        CGFloat scale = 1.0 - (lastScale - [(UIPinchGestureRecognizer*)sender scale]);

        CGAffineTransform currentTransform = [(UIPinchGestureRecognizer*)sender view].transform;
        CGAffineTransform newTransform = CGAffineTransformScale(currentTransform, scale, scale);

        [[(UIPinchGestureRecognizer*)sender view] setTransform:newTransform];
        yourImageView.transform = newTransform

        lastScale = [(UIPinchGestureRecognizer*)sender scale];
}

このコードも試してください。

于 2012-12-24T13:00:36.213 に答える
1

を使用してみてくださいUIScrollView

これを行うには、それを作成します

self.scrollView = [[UIScrollView alloc] initWithFrame:...];
self.scrollView.delegate = self;
self.scrollView.maximumZoomScale = 2.0; // adjust as you need
self.scrollView.minimumZoomScale = 0.5; // adjust as you need
[self.scrollView addSubview:self.imageView];

デリゲートメソッドを追加します。

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
    return self.imageView;
}
于 2012-12-24T13:00:26.673 に答える
-1

ズームを有効にするには、scrollViewを追加する必要があります。imageViewをスクロールビューのサブビューとして追加します。デリゲートUIScrollViewDelegateを自分自身に設定します。デリゲートメソッドを実装します。

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView

{
    //return the imageview here
    return self.imageView;

}

ここでイメージビューを拡大縮小します。

- (CGRect)zoomRectForScrollView:(UIScrollView *)scrollView withScale:(float)scale withCenter:(CGPoint)center

この例はAppleから参照できます。

于 2012-12-24T13:05:18.377 に答える