У меня проблема с одним из моих просмотров в моем приложении. Представления встроены в UIViewController
. Я хочу одновременно изменить высоту двух видов одновременно.
У меня есть следующий макет:
Синие точки и цветные линии - мои ограничения. Вид карты прикреплен к верхней и боковой сторонам и имеет ограничение по высоте.
Тогда у меня есть UITableView
, который прикрепляется к виду карты и вид снизу.
Кроме того, существуют ограничения для нижнего обзора. Этот вид прикреплен к сторонам и имеет фиксированную высоту 64.
Я думаю, что ограничения установлены правильно, и предупреждений нет.
Всякий раз, когда пользователь нажимает на ячейку UITableView
, я хочу изменить высоту как вида карты, так и UITableView
. Поскольку UITableView
прикреплен к виду карты, я подумал, что будет проще, если я просто анимирую изменение ограничения высоты вида карты.
Но это приводит к пустому пространству между двумя видами. Когда вид свернут (когда пользователь снова нажимает), он выглядит красиво.
Вот мой код:
self.mapViewHeightConstraint.constant = self.view.frame.height * 0.40
UIView.animate(withDuration: 0.4, animations:
{
self.view.layoutIfNeeded()
}, completion: nil})
Я также пробовал этот код (до того как я использовал ограничения, но результат был тот же):
UIView.animate(withDuration: 0.4, animations:
{
self.tableView.frame = CGRect(x: 0, y: self.view.frame.height * 0.40, width: self.view.frame.width, height: self.view.frame.height * 0.90)
self.mapView.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height * 0.40)
}, completion: nil})
Я пытался отключить автоматическую разметку, но это не решило проблему. Я также приложил небольшое видео:
Preview
Как вы можете видеть, когда я впервые касаюсь ячейки, и вид карты становится меньше, происходит небольшой прыжок с пробелом. Но когда я снова щелкаю ячейку и вид карты восстанавливается до полного размера, такого прыжка не происходит.
Как я могу решить эту проблему?