Попытка установить широкое изображение в UIScrollview с фиксированной высотой - PullRequest
0 голосов
/ 12 октября 2019

Новичок, который застрял на этой проблеме в течение 2 дней (пожалуйста, помогите!). У меня изображение намного шире экрана. Я хочу, чтобы пользователь мог прокручивать изображение по горизонтали, а также чтобы изображение имело определенную высоту при сохранении соотношения сторон.

В настоящее время UIImageView вложен в ScrollView. ScrollView имеет ограничения для безопасной зоны во всех 4 направлениях, которые размещают ее в верхней половине экрана (250 от нижней части безопасной зоны). ImageView имеет все 4 ограничения по 0 для «Руководства по расположению контента» ScrollView и 5-го ограничения по высоте, равной «Руководству по расположению кадров» ScrollView.

Первоначально я попытался установить режим содержимого изображения на «Aspect Fit». Это сохраняло соотношение сторон и устанавливало изображение на желаемую высоту в ScrollView, однако оставляло огромную прозрачность с обеих сторон изображения, поэтому пользователь должен некоторое время прокручивать, прежде чем увидеть изображение. Для этого я не смог найти решение, которое содержало бы представление прокрутки только в границах непрозрачного раздела, поэтому я изменил режим содержимого изображения на «Заполнение аспектами».

Это убрало прозрачность с обеих сторон, но изображение стало слишком высоким и исчезло с экрана по вертикали. Я установил «Clip to bounds» в инспекторе размера ImageView, а также установил для него значение true в коде, но изображение по-прежнему высокое и выходит за пределы указанного ограничения высоты. Я также использовал:

gym_imageView.sizeToFit()
scrollView.contentSize = gym_imageView.frame.size

Но ничего из этого не исправляет.

Мой ожидаемый результат состоял в том, что изображение с оригинальными размерами (W: 12064px, H: 1696px) изменило бы размеры довысота ограничения (от 0 до верха и низа в Руководстве по макету содержимого Scrollview, которое, в свою очередь, является ограничением от 0 до верхней части безопасной области, 250+ до нижней части безопасной области) при сохранении соотношения сторон.

Есть идеи?

1 Ответ

0 голосов
/ 12 октября 2019

Режим содержимого изменяет способ отображения изображения в imageView, но не изменяет размер самого изображения.

Вы должны установить явное ограничение соотношения сторон для вашего imageView с помощью множитель из 12064:1696. Тогда Auto Layout сможет рассчитать правильную ширину вашего imageView на основе того факта, что он уже знает желаемую высоту.

...