迅速向右滑动时,删除tableview灰色背景色

时间:2018-08-02 12:27:31

标签: ios swift uitableview scrollview swipe

我有一个tableview动态原型自定义tableview单元。 我的tableview单元格颜色是白色,并且tableview的背景也是白色。 我想向右滑动删除tableviewcell的功能,并使用自定义tableviewrowaction 我已经在我的应用程序中使用自定义tableviewrowaction实现了相同的效果,效果很好,但是唯一的问题是当我向右滑动单元格反弹时,单元格后面有灰色背景色。我已经删除了backgroundview,更改了单元格和tableview的颜色,但是当我滑动单元格时,仍然可以看到灰色的背景色。 以下是编写显示自定义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!)
    }
}

请找到所附的屏幕截图,其中灰色背景显示在后面 Swipe Screenshot

有什么方法可以禁用tableview的拖动弹跳,以免将其拖动到特定点之外。

3 个答案:

答案 0 :(得分:1)

您可以使用此库https://github.com/SwipeCellKit/SwipeCellKit允许您将图标放置在UITableViewRowAction

  

[TableView]不再支持将图案颜色设置为UITableViewRowAction的backgroundColor。

Swipeable UITableViewCell/UICollectionViewCell based on the stock Mail.app, implemented in Swift.

答案 1 :(得分:0)

要禁用表格视图拖动弹跳,可以使用以下方法-

@available(iOS 11.0, *)
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {

    let delete = UIContextualAction(style: .destructive, title: "Delete") { (action, sourceView, completionHandler) in

       // Code to perform delete action
        completionHandler(true);
    }

    let swipeAction = UISwipeActionsConfiguration(actions:[delete])
    swipeAction.performsFirstActionWithFullSwipe = false // This is the line which disables full swipe
    return swipeAction

}

答案 2 :(得分:0)

我尝试将背景色设置为.clear,但这没有用。这种解决方法可以完成工作。

action.backgroundColor = UIColor(white: 1, alpha: 0.001)