У меня есть UITableView, где каждая строка представляет собой пользовательский XIB. Одна строка имеет 4 кнопки UIB, которые являются вариантами выбора, такими как Вопрос, Информация и т. Д. Когда нажимается кнопка UIB, я отображаю анимацию в CALayer. Когда прокручивается табличное представление, CALayer удаляется, то есть анимация исчезает.
При нажатии кнопки я создаю CALayer, и начинается анимация. Как я могу убедиться, что CALayer не исчезает при прокрутке или обновлении таблицы?
class ReasonForSupportTableViewCell: UITableViewCell {
let animationView = AnimationView()
var hasButtonBeenTapped = false
var previousButtonTapped: UIButton? = nil
//IBOutlets
@IBOutlet weak var questionButton: UIButton!
@IBOutlet weak var informationButton: UIButton!
@IBOutlet weak var crashButton: UIButton!
@IBOutlet weak var bugButton: UIButton!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
//set initial button
questionButton.sendActions(for: .touchUpInside)
}
func createView(sender: UIButton) {
//draw the frame
animationView.frame = CGRect(x: 0, y: 0, width: 75.0, height: 75.0)
//change the view background color
animationView.backgroundColor = UIColor.clear
animationView.isUserInteractionEnabled = false
//add the view.
sender.addSubview(animationView)
}
@IBAction func buttonTapped(_ sender: UIButton) {
if previousButtonTapped == nil {
//you haven't tapped a button yet
createView(sender: sender)
animationView.animateTo()
previousButtonTapped = sender
} else if previousButtonTapped == sender {
animationView.removeAnimation()
previousButtonTapped = nil
} else {
animationView.removeAnimation()
createView(sender: sender)
animationView.animateTo()
previousButtonTapped = sender
}
}
}