Я пытаюсь сделать «кнопку записи», которая представляет собой UIView с распознавателем жестов для моего приложения. Прямо сейчас я реализую функцию, согласно которой, когда я нажимаю на вид, я хочу уменьшить внутренний круг (красный), однако это заканчивается неожиданным преобразованием. Для этого я использую функцию UIView.animate, и ниже приведен соответствующий код:
import UIKit
@IBDesignable
class RecordView: UIView {
@IBInspectable
var borderColor: UIColor = UIColor.clear {
didSet {
self.layer.borderColor = borderColor.cgColor
}
}
@IBInspectable
var borderWidth: CGFloat = 20 {
didSet {
layer.borderWidth = borderWidth
}
}
@IBInspectable
var cornerRadius: CGFloat = 100 {
didSet {
layer.cornerRadius = cornerRadius
}
}
private var fillView = UIView()
private func setupFillView() {
let radius = (self.cornerRadius - self.borderWidth) * 0.95
fillView.frame = CGRect(origin: CGPoint.zero, size: CGSize(width: radius * 2, height: radius * 2))
fillView.center = CGPoint(x: self.bounds.midX, y: self.bounds.midY)
fillView.layer.cornerRadius = radius
fillView.backgroundColor = UIColor.red
self.addSubview(fillView)
}
override func layoutSubviews() {
super.layoutSubviews()
setupFillView()
}
func didClick() {
UIView.animate(withDuration: 1.0, animations: {
self.fillView.transform = CGAffineTransform(scaleX: 0.6, y: 0.6)
}) { (true) in
print()
}
}
}
В моем ViewController у меня есть:
@IBAction func recoreViewTapped(_ sender: UITapGestureRecognizer) {
recordView.didClick()
}
Однако это приводит к такому эффекту: https://media.giphy.com/media/3ohjUQrWt7vfIxzBrG/giphy.gif. Я новичок и действительно не знаю, что не так с моим кодом?