2016-12-20 4 views
2

У меня есть вид с тремя кнопками одинакового размера. Каждая кнопка занимает 1/3 часть части обзора.Как мы можем увеличить ширину двух кнопок при удалении третьей кнопки из окна

Как это изображение:

enter image description here

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

Мой вопрос в том, как это возможно, используя Autolayout.

+2

Возможный дубликат [Автоматическое расположение, как скрыть 1 вид в представлении с 3 равными представлениями ширины] (http: // stackoverflow.com/questions/38364555/auto-layout-how-to-hide-1-view-in-a-view-with-3-equal-width-views) –

+0

Вы хотите полностью удалить кнопку или просто скрыть и показать Это? – Rikh

+0

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

ответ

6

Лучший вариант - использование stackView. StackView предоставляет большую гибкость при добавлении или удалении элементов. Если вы хотите использовать только автоматические макеты, вы можете достичь этого, подключив его ограничения ширины как IBOutlet и изменяя значения программно.

+0

Возможно, вам следует объяснить, как это делается. –

+0

Да StackView дает более гибкое и простое создание. но как мы можем выполнять только с использованием константы. Пожалуйста, дайте любые подсказки или ссылки на предложения. –

0

Лучший способ сделать это состоит в использовании UISTACKVIEW.Place в stackview и добавить-buttons.You может дать соответствующие ограничения макета для представления стека, как вам нужно

нажмите на стек view-- выберите атрибут инспектор изменений распределение - заполнить одинаково интервал - 0

Тогда после этого, если вы скрываете какую-либо кнопку, другие кнопки будут автоматически регулироваться по ширине

0

другой возможной золе этой проблемы Добавление или удалению ограничений во время выполнения является тяжелая операция, которая может fect performance. Однако есть более простая альтернатива.

Для просмотра, которое вы хотите скрыть, установите ограничение ширины. Ограничьте другие виды с помощью горизонтального зазора для этого вида.

Чтобы скрыть, обновите .constant ограничения ширины на 0.f. Другие виды автоматически перемещаются влево, чтобы принять положение. и равен ширина pervoid мультипликатора по ширине ..

0

У вас есть несколько вариантов:

  1. UIStackView который был сделан именно для этого.
  2. UICollectionView похоже на UIStackView определенным образом, но на самом деле не предназначен для этого. Тем не менее, это делает работу красиво, и ее легко реализовать. Иногда проще, чем UIStackView.
  3. NSLayoutConstraint с использованием нескольких ограничений с различным приоритетом, чтобы вы могли активировать/деактивировать их по мере необходимости и получить желаемый результат. Этот подход немного сложнее, поскольку он обеспечивает максимальную степень контроля и гибкость над представлениями в вашей иерархии.
0

Лучший способ добиться того, что вы ищете, как уже упоминалось, использовать UIStackView.

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