Распределение UIStackView заполняется одинаково

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

МОЙ ВОПРОС:

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

Спасибо.


person Bnj    schedule 26.10.2016    source источник


Ответы (3)


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

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

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

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

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

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

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

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

Теперь добавьте его как 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
    }
person Ahmad F    schedule 26.10.2016
comment
Ваши наглядные примеры - это как раз та проблема, с которой я столкнулся, Вау! Такая прекрасная идея Ахмад. Я попробую этот трюк и буду держать вас в курсе :) Спасибо. - person Bnj; 27.10.2016
comment
Рад помочь, при необходимости можно снять комментарий. - person Ahmad F; 27.10.2016
comment
Привет, снова Ахмад! Я исправил проблему сейчас. Но сталкиваюсь с другой проблемой! Итак, вот сценарий. У меня есть ColumnContainerStackView с Column1StackView и Column2StackView, внутри них есть 4 UIView. Как только я удалил 1 UIView в столбце 1, столбец 2 будет следовать за высотой столбца 1. Как я могу избежать того, чтобы Column2 не соответствовал высоте Column1? Спасибо. - person Bnj; 28.10.2016
comment
не могли бы вы объяснить это поподробнее? у меня такой же вопрос ... - person Ahmad F; 28.10.2016
comment
Привет Ахмад. Теперь я могу решить проблему. Большое спасибо :) - person Bnj; 29.10.2016

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

person phatmann    schedule 27.03.2017

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

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

person Ajil O.    schedule 26.10.2016
comment
@AhmadF Почему бы и нет? Я только что попробовал, и у меня это отлично работает! - person Ajil O.; 26.10.2016
comment
он сохраняет пробелы между ними, они не слипаются, то есть интервал! = 0, он распределяет ширину / высоту удаленного представления как пробелы между другими тремя представлениями. - person Ahmad F; 26.10.2016