2010-11-18 1 views
8

У меня есть UIScrollView, содержащий UIImageView, и у меня есть некоторые проблемы, чтобы получить правильное поведение, когда iPhone вращается.Масштабировать изображение, чтобы он соответствовал экрану на iPhone вращения

Цель: Я пытаюсь получить следующее при переходе от портрета до пейзажа:

_________ 
|AAAAAAA| 
|BBBBBBB|   _________________ 
|CCCCCCC|   |  AAAAAA  | 
|DDDDDDD| --> |  CCCCCC  | 
|EEEEEEE|   |  EEEEEE  | 
|FFFFFFF|   |_____GGGGGG_____| 
|GGGGGGG| 
--------- 

Здесь все изображение в портретном масштабируется в альбомной ориентации, когда iPhone вращается. Он также сосредоточен. Я также пытаюсь сохранить соотношение сторон. Взаимодействие с пользователем также включено, и пользователь должен иметь возможность использовать весь экран для панорамирования/масштабирования изображения.

В настоящее время я следующее autoresizingMask на Scrollview:

scrollView.autoresizingMask =(UIViewAutoresizingFlexibleWidth | 
           UIViewAutoresizingFlexibleHeight);  

Но это дает следующую

_________ 
|AAAAAAA| 
|BBBBBBB|   _________________ 
|CCCCCCC|   |AAAAAA   | 
|DDDDDDD| --> [BBBBBB   | 
|EEEEEEE|   [CCCCCC   | 
|FFFFFFF|   [DDDDDD__________| 
|GGGGGGG| 
--------- 

Этот параметр сохраняет масштаб и смещение от левого верхнего угла.

Вопрос: Можно ли получить это поведение, используя подходящий autoresizingMask? Если нет, то один, вероятно, следует установить

scrollView.autoresizingMask = UIViewAutoresizingNone; 

и вручную установить zoomScale и contentOffset для UIScrollView на вращение. Но где это должно быть сделано? Как насчет оживления этих изменений?

Решение: По слегка изменив ответ ниже я выше поведение, используя код ниже:

imageView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | 
            UIViewAutoresizingFlexibleHeight); 

scrollView.autoresizingMask =(UIViewAutoresizingFlexibleWidth 
            | UIViewAutoresizingFlexibleHeight); 

imageView.contentMode = UIViewContentModeScaleAspectFit; 
scrollView.contentMode = UIViewContentModeCenter; 

ответ

3

Попробуйте это:

scrollView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | 
          UIViewAutoresizingFlexibleHeight);  
imageView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | 
          UIViewAutoresizingFlexibleHeight); 

imageView.contentMode = UIViewContentModeAspectFit; // You could also try UIViewContentModeCenter 

Я не уверен, если imageView автоматически изменится в пределах UIScrollView, поэтому, если автоматизация не работает, вы можете попытаться установить кадр самостоятельно на поворот, чтобы он равнялся размеру прокрутки.

+1

Спасибо! Это было быстро. Чтобы получить правильное поведение, мне пришлось слегка изменить наш код (см. Выше), но это поставило меня в прямом направлении. – user467225

+1

Не работает вообще –

-1

У меня была аналогичная ситуация, очень простой scrollView с 3 imageViews («предыдущий», «текущий» и «следующий») для отображения серии фотографий.

Все фотографии были предназначены для iPad, но это сочетание пейзажной и портретной ориентации. Я хотел, чтобы они поместились в экран (т. Е. В почтовом ящике, если необходимо), с сохраненным соотношением сторон. Я нашел, что мне нужно было только сделать это с помощью 3-х изображений для его работы:

imageView.contentMode = UIViewContentModeScaleAspectFit; 

 Смежные вопросы

  • Нет связанных вопросов^_^