2014-09-10 6 views
1

Я изо всех сил пытался узнать автозапуск (наконец). Я хочу иметь вертикальный прокручиваемый UIScrollView, который содержит весь контент для представления. Я хочу привязать представление UIImage к вершине scrollview и сохранить изображение квадратом (scaleToFill). В основном я хочу, чтобы это сделать (я только хочу сделать это с autolayout):Как масштабировать представление UIImage на квадрат с Autolayout внутри UIScrollView

enter image description here

Я не могу получить изображение, чтобы сохранить соотношение сторон, оставаясь в пределах экрана границ. Всякий раз, когда я добавляю ограничение отношения к формату, imageView растет до 600 точек (ширина png, я думаю), но я хочу, чтобы он был как можно шире экрана.

Я думаю, что я правильно устанавливаю ограничения для UIImageView, потому что, если я избавлюсь от scrollView и просто отброшу изображениеViw непосредственно на представление, то, похоже, он делает то, что я хочу. Трюк помещает его в scrollView.

Это, как я в настоящее время она создала:

enter image description here

4 вертикальные/горизонтальные пространственные ограничения на представлении прокрутки все готово к постоянному 0.

+0

Вы хотите сохранить исходное соотношение сторон изображения, чтобы оно прокручивалось в прокрутке, если размер больше границ экрана? Или просто подогнать рамку? Если последнее, то зачем вам нужен прокрутка? – Petar

+0

Я не хочу сохранять аспектный рацион изображения. Я хочу, чтобы он всегда был квадратом. Я собираюсь разместить кучу содержимого под изображением, которое пользователь мог бы прокрутить вниз, чтобы читать. –

+0

Почему бы вам не поместить вид прокрутки под изображение? – Petar

ответ

0

Поскольку размер UIScrollView зависит от его содержимого, размер вашего UIImageView зависит от его содержимого.

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

Не забудьте использовать Placeholder как значение собственного значения в Interface Builder.

Надеюсь, это поможет.

+0

Итак, не можете ли вы установить contentSize в scrollview вручную, а затем в IB? Обычно я просто устанавливаю кадр и размер содержимого. Разве нет способа просто рассказать все, что нужно настроить на основе фрейма, с которого я создаю этот экземпляр? Каково это дело о заполнителе как значение собственного значения? Я видел другие сообщения о SO об этом, но я еще не понимаю, что он делает/зачем. –

+0

Извините за все последующие вопросы. –

+1

ScrollView ведет себя немного иначе при использовании с AutoLayout. Вы можете прочитать об этом здесь: https://developer.apple.com/library/ios/technotes/tn2154/_index.html. Причина использования заполнителя в качестве значения собственного значения заключается в том, что вы можете увидеть свое представление в IB с установленным вами размером, если выбрано значение по умолчанию. IB будет жаловаться. От IB: «Настройка внутреннего значения содержимого времени дизайна влияет только на представление при редактировании в Interface Builder. В представлении не будет такого внутреннего размера содержимого во время выполнения». – Petar

Смежные вопросы