2017-02-08 14 views
0

У меня есть столбец с несколькими динамическими подзонами с внутренними размерами (изображениями, ярлыками и т. Д.). Как я могу, чтобы супервизор соответствовал подзонам в автозапуске.Как подобрать супервизор к самому большому внутреннему виду с автоопределением

Если subviews не были динамическими, я бы просто ограничил ведущий/задний фронт subview для супервизора. Как так

enter image description here

Я думал, что я смогу выровнять к переднему краю, а затем имеют ограничения хвостовые быть >= 8, логика в «Задний край может быть больше, чем 8, если подтаблицы слишком узкий, но если subview широко расширяет супервизор, то есть, по крайней мере, задний край 8. " Но IB не нравится, что

Предостережения:

  • Невозможно использовать вид стека
  • подвиды имеют динамические ширины. Поэтому в примере любая строка может быть самой широкой.

ответ

0

Хорошо, вот как я получил работу. Не уверен, что это лучший способ.

  1. Установите все хвостовые ограничения на >=
  2. Установите ширину на надтаблицы
  3. создать выпускное отверстие для ширины SuperView ограничения
  4. В вашем ViewController, переопределить viewDidLayoutSubviews()
    1. Вычислить наибольшая ширина из всех ваших подземелий
    2. добавить свою марку к этой ширине
    3. установить ширину SuperView константу к максимальному, которое было вычислено
0

Выполните следующие действия,

  1. Добавить вид (скажем, вид А) на главном экране.
  2. Добавьте все три метки (например, метку 1, метку 2, метку 3) к виду A в виде подменю.
  3. Pin View A - это супер-вид на все четыре стороны. Измените ограничения сверху, снизу, слева и справа, как больше, чем (> =) 10, где приоритет задается по мере необходимости (потому что во избежание просмотра A, выходящего из экрана, если содержимое расширяется).
  4. Добавить ограничения на метку 1, то есть вывести его сверху, справа и слева от представления A по константе, равным 0. И нижнее нижнее значение метки 1 для метки 2 вершины равно 10, где приоритет ограничения устанавливается по мере необходимости ,
  5. Следуйте тем же шагам, что и на этикетке 2.
  6. Следуйте тем же шагам, что и на этикетке 3. i.e, прикрепите его к нижней части метки 2 и вправо, слева от изображения A. Подключите его к нижней части окна A, где нижнее ограничение должно быть равно 0, где приоритет задан как низкий.

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

ОБНОВЛЕНИЕ: Для получения указанной ниже мерзавца ссылке

Для ViewA добавить следующие ограничения,

  • ViewA центр Х и Y, чтобы SuperView центр X и Y (= 0 @ 1000)
  • ViewA ведущий и супервизор (> = 10 @ 1000)
  • ViewA trailing и SupreView trailing (> = 10 @ 1000)
  • ViewA Top и SuperV IEW Топ (> = 10 @ 1000)
  • ViewA Дно и снизу Продольный (> = 10 @ 1000)
  • Изображение1 к SuperView ведущий, верхний (= 0 @ 1000)
  • Изображение1 к SuperView задней (> = 0 @ 1000)
  • Изображение1 к image2 Bottom (= 10 @ 1000)
  • Изображение2 к SuperView Ведущий (= 0 @ 1000)
  • Изображение2 к SuperView задней (> = 0 @ 1000)
  • Изображение2 к image3 Bottom (= 10 @ 1000)
  • Изображение3 для контроля Leadi нг (= 0 @ 1000)
  • Image3 к SuperView отставая (> = 0 @ 1000)
  • Image3 к SuperView Bottom (= 0 @ 999)

Затем выберите ViewA и набор кадров обновления, есть будет по-прежнему отмечена красная метка, указывающая на отсутствие ограничений. Тем не менее вы можете добавить недостающее Constraint, что предлагает xcode, но установить его на удалить во время сборки. Обновите фреймы и запустите. Надеюсь, он работает согласно вашему требованию.

+0

Какое значение имеют ограничения с метки1/2/3 на viewA? Вы сказали, что label3 для просмотра. Нижнее ограничение - это «низкий» приоритет, но как насчет ярлыка label1, ведущего, заканчивающего viewA? label2, ведущий к viewA, и label3, ведущий к viewA. Также почему нижнее ограничение от label3 до viewA установлено на low? Я поиграл с некоторыми вещами, и это было похоже на работу, если я поместил контент, обнимающий действительно высокий, но IB жаловался на ограничения все время. Я помещаю то, что я сделал здесь https://github.com/iwllyu/TestAutoLayout. То есть для xcode 7.3, хотя – wyu

+0

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

+0

Я пробовал, и xcode жалуется на ограничения – wyu

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

  • Нет связанных вопросов^_^