Ios 使UITableViewCell短暂闪烁
我有一个Ios 使UITableViewCell短暂闪烁,ios,swift,uitableview,highlight,visual-effects,Ios,Swift,Uitableview,Highlight,Visual Effects,我有一个UITableView设置,我正在探索突出显示UITableView单元格的所有不同选项,我想知道以下几点: func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { . . cell.selectionStyle = .gray return cell } 现在发生的事情是,当一个单元格被选中时
UITableView
设置,我正在探索突出显示UITableView单元格的所有不同选项,我想知道以下几点:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
.
.
cell.selectionStyle = .gray
return cell
}
现在发生的事情是,当一个单元格被选中时,它会以灰色高亮显示,我想知道,是否有可能在大约0.5秒后取消选中该单元格
基本上,是否可以使手机只短暂闪烁,以便用户知道他与手机进行了交互,但手机不会保持选中状态?我将此tableView用作侧菜单,保持高亮显示不是我想要的行为
谢谢 终于成功了,我所做的是:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.cellForRow(at: indexPath)?.backgroundColor = .gray
DispatchQueue.main.asyncAfter(deadline: .now()) {
UIView.animate(withDuration: 0.5, animations: {
tableView.cellForRow(at: indexPath)?.backgroundColor = .none
})
}
也许这会帮助其他人。唯一的问题是,点击的单元格只有在手势结束后(即仅点击)才会在按下时高亮显示。如果有人对此有解决方案,我将不胜感激,但现在这就足够了。最终使其发挥作用,我所做的是:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.cellForRow(at: indexPath)?.backgroundColor = .gray
DispatchQueue.main.asyncAfter(deadline: .now()) {
UIView.animate(withDuration: 0.5, animations: {
tableView.cellForRow(at: indexPath)?.backgroundColor = .none
})
}
也许这会帮助其他人。唯一的问题是,点击的单元格只有在手势结束后(即仅点击)才会在按下时高亮显示。如果有人对此有解决方案,我将不胜感激,但现在就这样做。您可以在didSelectRow
方法中取消选择行,单元格将高亮显示,然后选择将淡出,让用户知道他们与单元格进行了交互
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
// Do whatever else you need
}
您可以在didSelectRow
方法中取消选择行,单元格将高亮显示,然后选择将淡出,让用户知道他们与单元格进行了交互
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
// Do whatever else you need
}
首先,我想没有必要使用DispatchQueue.main.asyncAfter(截止日期:.now())
。UIView.animate应该在主线程上运行。不管怎么说,Emilios的答案可能更正确,因为它取消选择单元格,而您的答案只会更改背景。这种方法对我有效,因为我只是将tableView用作侧菜单,但我理解,从干净的代码角度来看,如果我不需要选择单元格,将来最好取消选择行。谢谢首先,我想没有必要使用DispatchQueue.main.asyncAfter(截止日期:.now())
。UIView.animate应该在主线程上运行。不管怎么说,Emilios的答案可能更正确,因为它取消选择单元格,而您的答案只会更改背景。这种方法对我有效,因为我只是将tableView用作侧菜单,但我理解,从干净的代码角度来看,如果我不需要选择单元格,将来最好取消选择行。谢谢