在 Swift 中设置动画 UITableViewCell 突出显示颜色

Posted

技术标签:

【中文标题】在 Swift 中设置动画 UITableViewCell 突出显示颜色【英文标题】:Set animated UITableViewCell highlight color in Swift 【发布时间】:2018-10-21 10:14:01 【问题描述】:

默认情况下,UITableViewCell 的高亮效果如下所示:

我正在寻找一种类似的效果,而不是灰色是一种自定义颜色(例如 UIColor 默认红色值)。我尝试使用 setHighlighted 委托自己实现这一点,但它不会产生默认样式的动画效果。

这是我使用过的代码和达到的不希望的效果:

override func setHighlighted(_ highlighted: Bool, animated: Bool) 
  super.setHighlighted(highlighted, animated: animated)

  if highlighted 
    self.backgroundColor = .red
  

cellForRowAt 中设置cell.selectionStyle = .none

有什么方法可以产生类似原生的动画自定义高亮颜色?

【问题讨论】:

【参考方案1】:

您需要为您的“if”条件添加另一个条件“else”,并将红色背景颜色清除为正常。

  if highlighted 
    self.backgroundColor = .red
  else  
    self.backgroundColor = .white
  

【讨论】:

嘿米娜。我确实知道,我想要实现的是类原生动画。【参考方案2】:

(已编辑) 您可以使用手势来模拟本机的行为,如下所示:

  let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: "longPressed:")
yourCell.view.addGestureRecognizer(longPressRecognizer)

  func longPressed(sender: UILongPressGestureRecognizer)
   
        if sender.state == .began 
            yourCell.animate(withDuration: 0.2, delay:0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEeaseOut, animations:  yourCell.backgroundColor = .red )

        
        if sender.state == .ended 
            yourCell.animate(withDuration: 0.2, delay:0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEeaseOut, animations:  yourCell.backgroundColor = .white )
        
   

【讨论】:

嘿艾哈迈德,这不是我遇到的问题。我希望复制类似原生的动画。

以上是关于在 Swift 中设置动画 UITableViewCell 突出显示颜色的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 Swift 在 UITableView 中的部分标题的 UIView 中设置 UILabel 的文本

如何在 Swift 的搜索栏中设置动画?

在 Swift 中设置动画 UITableViewCell 突出显示颜色

如何在静态 UITableView 中设置 detailTextLabel.text?

如何在swift中设置自定义UITableviewcell的动态高度

从数组中设置自定义单元格 uibutton 标题 - Swift