Реализация имитации вдавлвиания при долгом нажатии

swift

#1

Необходимо имитировать вдавливание при долгом нажатии, подобно тому как это выглядит в приложенном 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
        })
    }}