Необходимо имитировать вдавливание при долгом нажатии, подобно тому как это выглядит в приложенном gif-файле (Apple music): уменьшение размеров при нажатии и возвращение стандартных при смещении пальца.
Использую вот такой код, но изменение размеров происходит с долгой задержкой, неуклюже и не по центру, а по направлению в верхний левый угол.
@IBOutlet var button: UIButton?
override func viewDidLoad() {
super.viewDidLoad()
let tapGesture = UITapGestureRecognizer(target: self, action:#selector(centerButtonClicked(sender:)))
let longGesture = UILongPressGestureRecognizer(target: self, action: #selector(centerButtonPressedDown(sender:)))
button?.addGestureRecognizer(tapGesture)
button?.addGestureRecognizer(longGesture)
tapGesture.numberOfTapsRequired = 1
}
@objc func centerButtonPressedDown(sender: UILongPressGestureRecognizer) {
if sender.state == .began {
UIView.animate(withDuration: 0.18, animations: {
self.button?.frame.size = CGSize(width: 32.0, height: 32.0)
self.button?.translatesAutoresizingMaskIntoConstraints = false
})
}
else if sender.state == .ended {
UIView.animate(withDuration: 0.18, animations: {
self.button?.frame.size = CGSize(width: 46.0, height: 46.0)
self.button?.translatesAutoresizingMaskIntoConstraints = false
})
}}