【问题标题】:Remove the tableview gray background color while swipe to right in swift快速向右滑动时删除tableview灰色背景颜色
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    你可以使用这个库https://github.com/SwipeCellKit/SwipeCellKit 允许你在UITableViewRowAction 上放置图标

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

    【讨论】:

    • 我已经按照这个库中提到的相同方式设计了我的 tableviewrowaction,但问题是我想要带有圆形边缘的 tableviewrowaction,所以我已经将整个图像添加到带有圆形边缘的行动作中
    【解决方案3】:

    要禁用tableview拖动反弹可以使用以下方法-

    @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
    
    }
    

    【讨论】:

    • 也尝试过此解决方案,但这不适用于自定义 tableview 行操作,因为当我拖动单元格时,我可以看到带有自定义图像的按钮数量
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    • 2020-04-11
    • 1970-01-01
    • 2013-03-21
    • 2016-11-29
    • 2013-10-10
    相关资源
    最近更新 更多