Вид внутри UIStackView не изменяет размер с помощью AutoLayout

У меня есть следующий экран:

введите здесь описание изображения

Все представления находятся внутри UIStackView. Желтый вид будет круглым во время выполнения. Моя проблема, когда я запускаю iPhone меньшего размера (5S), представление light blue, содержащее yellow view, не становится меньше, поэтому red and blue view снизу сжимается. Я хочу, чтобы эти два и green view имели фиксированную ширину, а light blue view адаптировали высоту.

Но почему-то нет. Я уверен, что это из-за ограничений, которые я установил для yellow view. Но не могу понять в чем проблема.

Вот ограничения yellow view:

введите здесь описание изображения

Ограничения для других представлений:

  1. Зеленый вид: высота = 64
  2. Красный и синий вид: высота = 50

Очень признателен, если кто-то может потратить некоторое время, чтобы просмотреть эти ограничения и помочь мне понять, как сделать светло-синий (и желтый) для изменения высоты при изменении экрана.


person Adrian    schedule 28.08.2016    source источник


Ответы (1)


Пробовали ли вы понизить приоритет устойчивости к сжатию содержимого (по вертикали) для голубых и желтых представлений, чтобы он был меньше 750, а приоритет сопротивления к сжатию содержимого (по вертикали) для зеленых, красных и синих представлений — выше 750 (возможно, даже 1000 / требуется, если это так?)

ОБНОВИТЬ

Я ознакомился с вашим проектом. На самом деле проблема, похоже, вовсе не в представлениях стека, ограничениях или DailyStatusViewController. Вместо этого проблема больше связана с MainViewController, который встраивает представление «Ежедневный статус» в представление прокрутки. Представление прокрутки обрезает границы и размещается за другим представлением контейнера. Если вы отключите отсечение по границам в представлении прокрутки и переместите представление контейнера под него, чтобы оно оказалось за, вы увидите, что ваши представления стека размещены правильно, но они просто обрезаются.

Что касается того, почему они были обрезаны, имейте в виду, что ваше представление стека имеет требуемое ограничение высоты 300, в то время как представление прокрутки, в которое оно встроено, имеет ограничение высоты до 45% высоты экрана. Таким образом, на небольших экранах доступно менее 300 точек для отображения ежедневного статуса, поэтому он обрезается. Возможно, вы захотите удалить ограничение фиксированной высоты из представления внешнего стека и вместо этого ограничить его краями корневого представления.

person Daniel Hall    schedule 28.08.2016
comment
Да, я забыл упомянуть, что я уже сделал это, без каких-либо эффектов. - person Adrian; 29.08.2016
comment
@Kobe Хм ... есть ли шанс, что вы могли бы опубликовать ссылку на свой проект или пример проекта только с этим экраном? - person Daniel Hall; 29.08.2016
comment
Это сделано с помощью Swift 3, так что все в порядке? - person Adrian; 29.08.2016
comment
Я добавил проект сюда, если у вас есть свободное время, посмотрите: github. com/adrianstanciu24/stack-view-test.git - person Adrian; 29.08.2016
comment
@Kobe Кажется, я нашел твою проблему: обновил свой ответ - person Daniel Hall; 29.08.2016