Я делаю приложение, которое имеет UIScrollView, который расширяется до высоты 280 и сжимается до высоты 0 при отклонении. Я использовал представление прокрутки, потому что обычное представление не будет «скрывать» свои подпредставления после анимации до высоты 0. Первоначально, до того, как произойдет анимация прокрутки, подпредставления отвечают, как ожидается, касанием, но после того, как высота представления вообще была анимирована, все подпредставления перестают отвечать на прикосновения пользователя. Я попытался убедиться, что zPosition всех подпредставлений больше, чем любое другое представление в контроллере представления, так что это не проблема. Похоже, что все кадры подпредставлений находятся в пределах их суперпредставлений. Ниже ссылка на видео моего выпуска:
Мой выпуск
Вот код того, что происходит, когда нажимается моя «кнопка параметров»:
@IBAction func parametersButtonPressed(_ sender: Any) {
UIView.animate(withDuration: 0.25, animations: {
if self.parametersExpanded {
//Close searchView, make shadowView transparent
self.searchView.frame.size.height = 0
self.parametersButton.frame = self.parametersButton.frame.offsetBy(dx: 0, dy: -280)
self.searchView.backgroundColor = UIColor.darkGray
self.shadowView.backgroundColor = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0)
} else {
//Expand the searchView, darken shadowView
self.searchView.frame.size.height = 280
self.parametersButton.frame = self.parametersButton.frame.offsetBy(dx: 0, dy: 280)
self.searchView.backgroundColor = UIColor(red: 230/255, green: 230/255, blue: 230/255, alpha: 1)
self.shadowView.layer.zPosition = 990
self.shadowView.backgroundColor = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.868)
}
}) { (bool) in
}
}
Обратите внимание, что в моем приложении searchView изначально закрывается, т.е. имеет высоту кадра 0. Для этой демонстрации я сделал так, чтобы при первой загрузке приложения представление расширялось, чтобы я мог продемонстрировать, что подпредставления отвечают перед анимацией своего суперпредставления. Кроме того, есть shadowView, который я использую для затемнения представлений за ним, но он довольно четко скрывается за searchView, так что это не проблема.