2015-09-30 3 views
3

Первая проблема:Горизонтально Центр UILabel + UIImageView внутри UIView с Autolayout

У меня есть UIView, содержащий UILabel (динамический текст) + UIImage. Я хочу, чтобы они были сосредоточены внутри UIView. Так же, как эти образы:

enter image description here

enter image description here

Ответ here устарело и теперь мы стек вид, может быть, это может сделать задачу проще.

Вторая проблема:

У меня есть три UIView-х рядом друг с другом каждый из них имеет UIImageView + UILabel, которые должны быть центрированы в своем контейнере (задача 1). В iPhone 4s, который имеет небольшую ширину экрана текст ломает макет, как на этой картинке:

enter image description here

Я использую Xcode 7.0 | Цель iOS8 и выше | Swift 2

+0

Можете ли вы показать ограничения, которые вы установили? – Paulw11

+0

Наденьте этикетку и изображение на боковые стороны контейнера. Используйте нулевой вывод для верхнего и нижнего уровня, и все, что вам нравится, для промежутка между изображением и меткой. Для боковых ограничений используйте> =, а не =, поэтому макет может соответствовать более крупному элементу. Центрируйте как метку, так и изображениеView горизонтально (но не вертикально) в контейнере, затем центрируйте контейнер в главном окне по горизонтали и по вертикали. До тех пор, пока у вас есть образ по умолчанию, установленный в представлении изображения, это должно содержать по крайней мере макет с конфликтами или ошибками - вам может потребоваться настроить приоритеты, чтобы получить именно то, что вы хотите –

+0

Вам также необходимо установить maxPreferredWidth на метке. Или использовать ограничение ширины –

ответ

2

Это на самом деле довольно легко сделать в чистом Autolayout/IB без кода. Это выглядит примерно так: enter image description here

Вот файл раскадровки с видом, чтобы вы легко могли видеть ограничения. Он использует один и тот же метод обложек subview, но трюк для сокращения ярлыков/обрезки по мере необходимости добавляет ограничения> = 0 к обеим сторонам представления оболочки, не позволяя ему расширяться за границами родительского представления, что в поворот держит этикетку от роста.

https://www.dropbox.com/s/ml67zdjwugf8jco/SO_Solution-20151013.storyboard?dl=0

+0

Я следил за раскадрой, и это работает, он трюк здесь устанавливает ведущее и конечное пространство в> = и <=. Любое предложение, чтобы показать полный текст во всех устройствах, я хочу показать «50 заявителей», а не «50 приложений ...» на всех устройствах? – iOSGeek

+0

Вам нужно что-то дать! Что станет меньше? Если вы в порядке с уменьшением размера текста, вы можете включить эту опцию. Другой альтернативой было бы позволить уменьшить количество изображений. – Ben

+0

Возможно, размер текста должен стать меньше, чтобы соответствовать размеру. Я могу сделать код, я думаю, но с IB это возможно? – iOSGeek

0

Чистота содержит и добавляет еще раз. У меня эта проблема в Xcode 7.0, но она, по-видимому, была исправлена ​​в Xcode 7.0.1.

0
  1. Используйте кнопки (вместо того, чтобы с помощью ImageView & Label) и установить соответствующее изображение & название.
  2. набора изображения & Название вставки
  3. Добавить для просмотра и назначения ведущего космических & нижнего пространства SuperView ограничения на первую кнопку
  4. Назнач Продольного пространству & нижнего пространство SuperView ограничения на третью кнопку
  5. Присвоить левую горизонтальное пространство (с первой кнопкой) & Правое горизонтальное пространство (с третьей кнопкой) на вторую кнопку.
  6. Добавить равную ширину & фиксированное ограничение высоты со всеми тремя кнопками.

Кроме того, вы можете добавить ограничение ширины и сделать его с динамической шириной.

В порядке, вы можете заполнить его кнопкой.

+0

Я нашел другое решение с изображением и ярлыком здесь. http://stackoverflow.com/questions/14741713/auto-layout-constraints-center-2-side-by-side-views-in-a-parent-view –

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