gpt4 book ai didi

swift - 出队后,CALayer 在自定义 UITableViewCell NIB 上消失

转载 作者:行者123 更新时间:2023-11-30 11:09:07 24 4
gpt4 key购买 nike

我有一个 UITableView,其中每一行都是一个自定义 XIB。一行有 4 个 UIButton,它们是选择,例如问题、信息等。点击 UIButton 时,我会在 CALayer 中显示动画。当table view滚动时,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

}

}

}

最佳答案

子类 UIButton 以在初始化时添加 CALayer,而不是在点击按钮时添加。然后,您可以使用 prepareForReuse() 函数停止任何动画。

关于swift - 出队后,CALayer 在自定义 UITableViewCell NIB 上消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52372324/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com