У меня есть UIScrollView, содержащий UIImageView, и у меня есть некоторые проблемы, чтобы получить правильное поведение, когда 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;