Распределение распределения UIStackView равномерно

Итак, у меня есть UIStackView, который содержит четыре (4) UIView s. Если я удалю один (1) из этих UIView s, остальные три (3) заполнит все пространство в UIStackView.

МОЙ ВОПРОС:

Как добавить максимальную высоту на UIView, чтобы она не заполнила все пространство UIStackView, даже если распределение заполнено одинаково? Я читал что-то о добавлении ограничения, но я не могу заставить его работать. Кстати, я использую swift.

Спасибо.

Ответ 1

В качестве подтверждения, это текущее поведение:

enter image description here

И это то, что вы просите:

enter image description here

Чтобы достичь этого, вы можете воспользоваться этим простым трюком:

P.S: Я предполагаю, что вы добавили необходимые ограничения для своего стекового представления.

Если ваше представление стека не имеет ограничения по высоте, добавьте его:

enter image description here

Теперь добавьте его как IBOutlet к назначенному ViewController; В моем примере я называю это stackHeight:

@IBOutlet weak var stackHeight: NSLayoutConstraint!

В случае, если вы хотите скрыть вид (в моем примере я скрываю оранжевую кнопку на основе назначенного ей IBAction, при прикосновении к ней, она должна быть скрыта), вам необходимо получить высоту вида, который вы хотите скрыть и вычесть из stackHeight.constant:

    @IBAction func orangeTapped(_ sender: AnyObject) {
        orange.isHidden = true

        // here we go:
        stackHeight.constant = stackHeight.constant - orange.frame.size.height
    }

Ответ 2

Удалите ограничение на нижний край представления стека. Затем он изменит размер, чтобы он просто соответствовал видимым элементам управления.

Ответ 3

Попробуйте изменить свойство "Распределение" в инспекторе атрибутов представления стека равным интервалом. Он должен работать.

Или вы можете изменить его, чтобы заполнить одинаково, чтобы равномерно заполнить остальные 3 вида в представлении "Стек".