Ограничения для центрирования одной кнопки, когда другое скрыто

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

Для жизни меня я не смог понять, как настроить ограничения, чтобы это произошло.

Я могу перемещать видимую кнопку так, чтобы она была центрирована, если другая кнопка скрыта, но может показаться, что она только делает это после загрузки вида, что делает кнопку «прыгать» и выглядит глупо.

UIStackView обе кнопки в UIStackView :

и отрегулируйте его параметры в соответствии с вашими потребностями:

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


Результат с помощью кнопки 1 hidden == false (un-ticked):

Button1 hidden == false (un-ticked)

Результат с помощью кнопки1 hidden == true (отмечено):

Button1 hidden == true (отмечено галочкой

Если вы можете получить кнопку в правильном положении, попробуйте оживить ее, чтобы придать ей хороший эффект. Обратите внимание, что это только анимирует изменения ограничений, поэтому, если вы делаете что-то еще, чтобы переместить кнопку, это может не сработать.

 UIView.animate(withDuration: 0.5, animations: { //do whatever you're doing to make the button 'jump' to the right position here self.view.layoutIfNeeded() }) 

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

Моя рекомендация? Это не идеально, а просто добавьте третью кнопку. Если вам нужно скрыть одну кнопку, просто скройте оба и отобразите третью.

  • Создание UIButton (UIButtonTypeCustom) с изображением сверху и ярлыком внизу с помощью AutoLayout
  • Многострочный UIButton и автозапуск
  • Давайте будем гением компьютера.