Исправлено, применяя преобразования к UIScrollView (содержащему UIImageView), вместо самого UIImageView.
Просто применение преобразований в UIScrollView не получилось достаточно хорошо. Он поместил бы повернутое изображение в меньший вид, а масштабирование не использовало доступное пространство экрана.
Наконец-то мне удалось исправить это, так вот вот как.
Требования
- Горизонтально прокрутки списка полноэкранных изображений
- Поворот устройства должны не вращать приложение, но MUST повернуть показанное изображение
- Должно быть в состоянии для увеличения изображения, как при удержании устройства в портретной и альбомной ориентации
Как я реализовал это
Одна из основных UIScrollView с высотой, равной высоте экрана, а ширина равна ширине экрана * количеству изображений. Пейджинг включен.
Этот основной UIScrollView содержит подзаголовок для каждого изображения. Каждый подтаблица выглядит следующим образом:
UIScrollView> UIView> UIImageView
UIScrollView имеет размер экрана, а его origin.x свойство равно 0 для первой подтаблицы, и увеличения с шириной экрана для каждого последующего UIScrollView. Результат является главным UIScrollView, со всем субом UIScrollViews рядом с Афоризм, как это (без пробелов):
┌────────────────────┐
│┌───┐┌───┐┌───┐┌───┐│
││ 1 ││ 2 ││ 3 ││ 4 ││
││ ││ ││ ││ ││
│└───┘└───┘└───┘└───┘│
└────────────────────┘
Чтобы устранить проблему вращения, то UIImageView больше не является прямыми подтаблицами от UIScrollView, но теперь встроенный внутри контейнера UIView.
Метод основного делегата UIScrollView теперь возвращает контейнер UIView для видимого изображения, поэтому этот контейнер UIView будет использоваться для масштабирования. Вращение просмотров изображений по-прежнему выполняется с анимированным setTransform:
с использованием как CGAffineTransformScale
, так и CGAffineTransformMakeRotation
.
Я полагаю, что реализация без контейнера UIView не работала, потому что UIImageView больше не может быть преобразован основным UIScrollView, когда к нему уже применяется преобразование.
Но вы можете увеличивать масштаб, когда он находится на портрете? Если вы поворачиваете в альбомный пейзаж, а затем возвращаетесь к портрету, можете ли вы снова увеличить масштаб? – mbuc91
Да, я могу масштабировать, когда на портрете, и да, я могу увеличить масштаб при возвращении к portait. –