iOS UIScrollView с проблемой аспекта вращения UIImageView - PullRequest
2 голосов
/ 11 мая 2011

Заранее извиняюсь за недостаток знаний iOS SDK. Я разработчик для Android, которому поручено поддерживать и обновлять приложение для iPhone.

Я использую UIScrollView для управления масштабированием и перетаскиваниемизображение, которое отображается в UIImageView.

Изображение в UIImageView запрашивается с веб-сервера несколько раз в секунду.Когда ориентация устройства изменится, размеры изображения изменятся на размеры текущего кадра, например, при использовании iPad в портретном режиме размеры изображения будут 768x1024, но при переключении в альбомный режим размеры изображения будут 1024x768.Веб-сервер выполняет работу по добавлению черных полос в верхнюю / нижнюю или левую / правую часть изображения в зависимости от ориентации и соотношения сторон запрашиваемого изображения.

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

Если я не укажу contentMode для UIScrollView, то появится изображениеСжатый, как будто ScrollView пытается отобразить изображение в предыдущих измерениях ориентаций.

Если я укажу contentMode UIViewContentModeScaleAspectFit для ScrollView и увеличу масштабирование до конца, изображение будет меньше, чем View, соотношение сторонправильно, но изображение центрировано, а высота соответствует предыдущим ориентациям.

Если я укажу contentMode для UIViewContentModeScaleAspectFill для ScrollView, все отобразится правильно, но поскольку представление фактически масштабирует изображение до нужного размераэкран, когда я выхожу из scrollView, данные масштабирования, которые я использовал, не переводятся должным образом.

Что мне нужно сделать, чтобы установить «базовый размер» UIScrollView на nкакой размер кадра при изменении ориентации устройства?Или я пропускаю свойство, которое мне нужно установить?

Ответы [ 2 ]

1 голос
/ 11 мая 2011

Похоже, вы не обновляете размер контента в представлении прокрутки. Вам нужно сделать что-то вроде

scrollView.contentSize = newImageSize;

Надеюсь, что это все

0 голосов
/ 11 мая 2011

Если я правильно понимаю, вы можете использовать метод zoomToRect:animated: в UIScrollView. Затем вы можете установить масштаб на размер изображения.

...