iphone uiscrollview и uiimageview - установка начального масштаба

Я использую следующий код для загрузки изображения в прокрутку. Изображение всегда загружается в масштабе 100%. Есть ли способ настроить загрузку на другой уровень масштабирования, скажем, 0,37?

Я пробовал scrollView.zoomScale = .37, но это не сработало.

UIImageView *tempImage = [[UIImageView alloc]initWithImage:[UIImage imageWithData:data]];
        self.imageView = tempImage;

        scrollView.contentSize = CGSizeMake(imageView.frame.size.width , imageView.frame.size.height);
        scrollView.maximumZoomScale = 1;
        scrollView.minimumZoomScale = .37;
        scrollView.clipsToBounds = YES;
        scrollView.delegate = self;

        [scrollView addSubview:imageView];

person Brodie    schedule 21.04.2010    source источник


Ответы (5)


Масштабирование работает только при реализации обратного вызова делегата viewForZoomingInScrollView:.

-(UIView *) viewForZoomingInScrollView:(UIScrollView *)inScroll {
  return imageView;
}
person drawnonward    schedule 21.04.2010
comment
Я этого не знал, и это решило мою проблему. Большое спасибо! - person K-RAN; 27.07.2010

Я понял это... Я использовал scrollView.zoomScale = 0,37; прежде чем я загрузил изображение, изменился код, и он отлично работает.

UIImageView *tempImage = [[UIImageView alloc]initWithImage:[UIImage imageWithData:data]];
self.imageView = tempImage;

scrollView.contentSize = CGSizeMake(imageView.frame.size.width , imageView.frame.size.height);
scrollView.maximumZoomScale = 1;
scrollView.minimumZoomScale = .37;
scrollView.clipsToBounds = YES;
scrollView.delegate = self;
[scrollView addSubview:imageView];
scrollView.zoomScale = .37;
person Brodie    schedule 21.04.2010

Существует zoomScale свойство, которое вы можете установить.

person kennytm    schedule 21.04.2010
comment
Но обратите внимание, что, как упомянул Brodie4598, это нужно сделать после того, как imageView был добавлен в scrollView. - person pm_labs; 04.06.2010
comment
Также обратите внимание, что viewForZoomingInScrollView: делегата будет вызываться, когда вы устанавливаете свойство zoomScale, поэтому вам нужно убедиться, что он возвращает правильное представление в этой точке. - person Clafou; 04.08.2012
comment
Очень важно, что сказал @paul_sns. У меня было странное поведение при масштабировании прокрутки. Это потому, что я установил изображение после настройки масштабирования. - person Ispas Claudiu; 17.08.2017

Я столкнулся с той же проблемой.
Я использовал встроенный метод: scrollViewForImage

Это установит начальный уровень масштабирования до уровня 5

[self.scrollViewForImage setZoomScale:5 animated:YES];

код для минимального уровня масштабирования

self.scrollViewForImage.minimumZoomScale=1;

код для максимального уровня масштабирования

self.scrollViewForImage.maximumZoomScale=12.0;

Надеюсь, это поможет

person Sankalp S Raul    schedule 21.10.2014

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

person Elly    schedule 30.03.2014
comment
Я не понимаю, что вы имеете в виду. Объясните понятно. - person Nejat; 30.03.2014