Масштабировать изображение по размеру экрана при повороте iPhone

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

Цель: Я пытаюсь получить следующее при переходе от портретной к альбомной ориентации:

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

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

В настоящее время у меня есть следующая маска автоматического изменения размера в 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;
8
задан user467225 18 November 2010 в 22:31
поделиться