【发布时间】:2018-08-02 12:27:31
【问题描述】:
我有一个 tableview 动态原型自定义 tableview 单元格。 我的 tableview 单元格颜色是白色的,tableview 的背景也是白色的。 我想为我的 tableviewcell 向右滑动删除功能,并使用自定义 tableviewrowaction 我已经在我的应用程序中使用自定义 tableviewrowaction 实现了相同的功能,它工作正常,但唯一的问题是当我向右滑动单元格反弹并且单元格后面有灰色背景颜色时。我已经删除了背景视图,更改了单元格和表格视图的颜色,但是当我滑动单元格时,我仍然可以看到背景颜色为灰色。 以下是为显示自定义 tableview 删除行操作而编写的代码
public func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
let deleteAction = UITableViewRowAction(style: .default, title: "") { (action, indexPath) in
let cell = self.tableview.cellForRow(at: indexPath) as? CardInfoSwipeCell
cell?.deleteAction(action)
}
deleteAction.setIcon(iconImage: UIImage(named: "delete")!, backColor: UIColor.white, cellHeight: 100.0, iconSizePercentage: 0.79)
return [deleteAction]
}
以下是在 tableviewrowaction 上设置图像的代码
extension UITableViewRowAction {
func setIcon(iconImage: UIImage, backColor: UIColor, cellHeight: CGFloat, iconSizePercentage: CGFloat)
{
let iconHeight = cellHeight * iconSizePercentage
let margin = (cellHeight - iconHeight) / 2 as CGFloat
UIGraphicsBeginImageContextWithOptions(CGSize(width: cellHeight, height: cellHeight), false, 0)
let context = UIGraphicsGetCurrentContext()
backColor.setFill()
context!.fill(CGRect(x:0, y:0, width:cellHeight, height:cellHeight))
iconImage.draw(in: CGRect(x: 0, y: margin, width: iconHeight - 10, height: iconHeight - 4))
let actionImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
self.backgroundColor = UIColor.init(patternImage: actionImage!)
}
}
有什么办法可以禁用tableview的拖拽反弹,让它不应该被拖到某个点之外。
【问题讨论】:
-
您是否尝试将单元格背景颜色更改为清除?
-
@ivarun 是的,我已经尝试过了,但仍然存在同样的问题
标签: ios swift uitableview scrollview swipe