Я хочу программно переместить и увеличить размер UIView
на кране, а затем, если снова нажать UIView
, анимировать его обратно к исходному размеру и положению.
Я могу заставить UIView
развернуться и перейти к первому касанию. Однако после этой начальной анимации отводы вообще не регистрируются.
let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(handleTap(sender:)))
myView.heightAnchor.constraint(equalToConstant: 50).isActive = true
myView.widthAnchor.constraint(equalToConstant: 50).isActive = true
myView.isUserInteractionEnabled = true
myView.addGestureRecognizer(tapRecognizer)
Ниже приведена моя функция, которая вызывается handleTap для выполнения начальной анимации при первом нажатии. Работает нормально. Я перевожу положение myView, а затем изменяю размер кадра, чтобы увеличить его.
fileprivate func expandView(_ sender: UITapGestureRecognizer) {
UIView.animate(withDuration: 0.5, animations: {
let translate = CGAffineTransform(translationX: 100, y: 50 )
sender.view?.transform = translate
sender.view?.backgroundColor = .green
}) { (_) in
UIView.animate(withDuration: 0.5, animations: {
// change frame size of view to make it bigger
sender.view?.frame = CGRect(x: 100, y: 50, width: 100, height: 100)
})
}
}
Я попытался закомментировать анимацию, которая изменяет размер кадра, оставляя только перевод XY. Это также не позволяет снова запускать handleTap при нажатии myView.