Можем ли мы уменьшить изображение с помощью кода, которое было увеличено с помощью pinch zoom?

#iphone #objective-c #uiscrollview #uiimageview #zooming

#iPhone #objective-c #uiscrollview #uiimageview #масштабирование

Вопрос:

Реализация pinch zoom была выполнена с использованием UIScrollView и помещением ‘UIImageView` внутри него с помощью следующего кода:

 -(void)viewDidLoad{
    slideShowImageViewScrollView.maximumZoomScale = 4.0;
    slideShowImageViewScrollView.minimumZoomScale = 1.0;
    slideShowImageViewScrollView.clipsToBounds = YES;
    slideShowImageViewScrollView.delegate = self;
    slideShowImageViewScrollView.scrollEnabled = NO;
}
  

Затем после проверки масштабирования прокрутка включена как:

 - (void)scrollViewDidZoom:(UIScrollView *)scrollView 
{
if (scrollView.zoomScale!=1.0) 
{
    slideShowImageViewScrollView.scrollEnabled = YES;
}
else 
{
    slideShowImageViewScrollView.scrollEnabled = NO;
}
}
  

И вот вид, который предназначен для увеличения, в режиме прокрутки

 - (UIView *) viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return slideShowImageView;
}
  

Теперь с помощью таймера изображение UIImageView было изменено через определенный промежуток времени следующим кодом:

 - (void) changeImageSlide
{
    if (imageCounter>=totalNoOfImages-1) 
    {
        imageCounter=0;
    }
    NSString *str = [NSString stringWithFormat:@"%@.jpg",[copyOf_myGlobleArrayOfImageIds objectAtIndex:imageCounter]];
    mainSlideShowImageView setImage:[UIImage imageNamed:str]];
    [mainSlideShowImageView setTag:[[copyOf_myGlobleArrayOfImageIds objectAtIndex:imageCounter] intValue]];     
    imageCounter  ;
}
  

Единственная проблема здесь в том, что когда загружается следующее изображение, которое также «увеличено», мы хотим, чтобы изображение было в обычном режиме.
Можем ли мы достичь этого (закодировав его для уменьшения в нашем changeImageSlide методе или где-либо еще)?
Если да, то как?
Если нет, то есть ли какая-либо альтернатива?

Спасибо.

Ответ №1:

При загрузке нового изображения установите zoomScale для ScrollView значение 1.0.

 [slideShowImageViewScrollView setZoomScale:1.0 animated:NO];
  

Комментарии:

1. Копировать ответы других людей невежливо.

2. Я этого не сделал. Когда я ответил, ответа не было. Я открываю вопросы во вкладках, так что, возможно, вы ответили к тому времени, как я добрался до этой вкладки. Вы действительно думаете, что я должен был скопировать ваш ответ? Где вообще ваш фрагмент кода? Я скопировал это у вас? Эй, rptwsthi, выбери ответ Саймона как правильный. Я занимаюсь этим не ради очков.

Ответ №2:

Вы можете установить масштаб увеличения в scrollview, чтобы сбросить его до 1.0. Вы даже можете сохранить уровни масштабирования для изображений, чтобы сохранить индивидуальные настройки масштабирования для каждого изображения.