Размер изображения сбрасывается на исходный после выполнения pich с помощью UIPichGestureRecognizer в iphone - PullRequest
0 голосов
/ 13 октября 2011

У меня есть один контроллер представления, в котором я программно добавил UIScrollView & UIImageView. Я добавил UIPichGestureRecognizer в UIImageView. Мой UIImageView добавлен в UIScrollView в качестве подпредставления.

Моя проблема в том, что, когда я пытаюсь ущипнуть изображение, оно увеличивается. Но когда я отпускаю прикосновения с экрана, оно снова достигает размера по умолчанию. Я не могу найти ошибку в коде. Пожалуйста, помогите мне. Ниже мой код

 - (void)createUserInterface {

    scrollViewForImage = [[UIScrollView alloc]initWithFrame:CGRectMake(20.0f, 60.0f, 280.0f, 200.0f)];
    scrollViewForImage.userInteractionEnabled = YES;
    scrollViewForImage.multipleTouchEnabled = YES;
    scrollViewForImage.backgroundColor = [UIColor redColor];
    scrollViewForImage.autoresizesSubviews = YES;
    scrollViewForImage.maximumZoomScale = 1;
    scrollViewForImage.minimumZoomScale = .50;
    scrollViewForImage.clipsToBounds = YES;
    scrollViewForImage.delegate = self;
    scrollViewForImage.bouncesZoom = YES;
    scrollViewForImage.contentMode = UIViewContentModeScaleToFill;
    [self.contentView addSubview:scrollViewForImage];

    imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0.0f, 0.0f, 280.0f, 200.0f)];
    [imageView setBackgroundColor:[UIColor clearColor]];
    imageView.userInteractionEnabled = YES;
    imageView.multipleTouchEnabled = YES;

    UIPinchGestureRecognizer *pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinch:)];
        [pinchRecognizer setDelegate:self];
        [imageView addGestureRecognizer:pinchRecognizer];
    //[self.contentView addSubview:imageView];
    [self.scrollViewForImage addSubview:imageView];

    scrollViewForImage.contentSize = CGSizeMake(imageView.frame.size.width , imageView.frame.size.height);

}


-(UIView *) viewForZoomingInScrollView:(UIScrollView *)inScroll {
    return imageView;
}

-(void)pinch:(id)sender {

    [self.view bringSubviewToFront:[(UIPinchGestureRecognizer*)sender view]];

    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];
    lastScale = [(UIPinchGestureRecognizer*)sender scale];
}

1 Ответ

1 голос
/ 22 ноября 2011

Из того, что я вижу, проблема заключается в следующем:

scrollViewForImage.maximumZoomScale = 1;

Вы устанавливаете максимальный масштаб увеличения изображения в 1 раз по сравнению с его полным размером.Это означает, что после того, как вы закончите сжимать изображение, оно уменьшится в 1 раз.

Если вы хотите иметь возможность увеличить изображение до большего размера, попробуйте установить это значение выше 1.например,

scrollViewForImage.maximumZoomScale = 3;
...