Скрытие вида с ограничениями и анимацией - PullRequest
1 голос
/ 12 марта 2020

У меня есть UIViewController, который является пользовательским TabBarController. Внутри у меня есть UIView, который содержит UIViewController, а внизу еще один UIView, который функционирует как TabBar, я хочу скрыть TabBar с анимацией и сохранить ограничения в порядке. По какой-то причине, каждый раз, когда я пытаюсь это сделать, ограничения вида сбиваются с толку.

TabBar имеет постоянную высоту 100 точек.

- UIViewController
  - viewContent (UIView, the UIViewController container)
  - viewTabBar (UIView as TabBar)

enter image description here

Это мой код:

func hideTabBar() {
    UIView.animate(withDuration: 400) {
        self.contentView.frame.size.height += self.viewTabBar.frame.size.height
        self.view.layoutIfNeeded()
    }
}

Помощь?

1 Ответ

2 голосов
/ 12 марта 2020

Я предполагаю, что лучшим способом сделать это было бы сделать ограничение высоты панели вкладок IBOutlet, или просто создать его программно, а затем просто изменить значение этой константы ограничения. Примерно так:

var tabbarHeightConstraint = NSLayoutConstraint(item: tabbarView, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .none, multiplier: 1, constant: 100)

NSLayoutConstraint.activate([tabbarHeightConstraint])

// Animating, set new tab bar height to 0
tabbarHeightConstraint.constant = 0

UIView.animate(withDuration: 400) {
  self.view.layoutIfNeeded() // Or wherever the tabbar view is in
}

Теперь, если вы хотите снова показать панель вкладок, просто сделайте то же самое, но установите константу равной 100.

...