Быстрые автоматические макеты изменяют положение кнопок, когда некоторые кнопки скрыты - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть пользовательский UICollectionViewCell как TaskCell, в который я добавил 4 кнопки.Все кнопки добавляются программно с использованием автоматических макетов.

Теперь, когда я скрываю некоторые кнопки, я хочу, чтобы остальные оставшиеся кнопки заняли место скрытых кнопок.Проверьте следующие изображения.

enter image description here

Здесь вы можете увидеть 4 кнопки, выровненные по правой стороне с помощью трейлинг-якорей.Теперь, если я скрою последние две кнопки, а именно «Рейтинг» и «Удалить», я хочу, чтобы оставшиеся две кнопки сместились вправо и заняли место кнопки «Рейтинг» и «Удалить».

На следующем рисунке показано, что другие кнопки остаются прежнимиместо, когда я скрываю кнопки рейтинга и удаления.

Каков наилучший способ сделать это?

Я знаю один способ, где мы должны хранить trailingAnchors и устанавливать его активное свойство в соответствии с нашимиусловие.

вроде следующего

enter image description here

var deleteTrailingAnchor: NSLayoutConstraint?

deleteTrailingAnchor = deleteButton.trailingAnchor.constraint(equalTo: buttonContainer.trailingAnchor, constant: -8)

 deleteTrailingAnchor?.isActive = true

Теперь мы должны управлять deleteTrailingAnchor в соответствии с нашими потребностями.

Есть ли лучший способ решить эту проблему, используя AutoLayouts.

Спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

UIStackView будет делать то, что вы хотите.

Дайте ему ограничения Top, Bottom и Trailing, но NOT a ограничение ширины.

Когда вы добавляете / удаляете упорядоченные подпредставления, в ячейке он остается "выровненным по правому краю".

Здесь у меня есть 4 UIImageViews "a" "b" "c" и "d".Представления изображения имеют ограничения ширины 30 и ограничения соотношения сторон 1: 1.

Во-первых, все 4 представления изображения находятся в виде стека:

enter image description here

Далее я удалил "c":

enter image description here

А теперь я удалил "a" и "c ":

enter image description here

Как вы можете видеть, представление стека обрабатывает размещение представлений изображения для вас.

0 голосов
/ 25 сентября 2018

Самый простой способ - добавить ограничения ширины для всех кнопок (также установите пробелы между кнопками в 0 и позвольте им совмещать одно рядом с другим).Затем, когда вам нужно скрыть одну (или несколько), просто установите isHidden на true и значение ограничения ширины на 0 для одной (или нескольких кнопок).Они будут скрыты, а все остальные кнопки будут размещены на новой позиции.Это будет выглядеть намного лучше, если вы оживите его с помощью UIView.animate(withDuration:, animations:)

...