У меня есть 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;