Пользовательская трейлинг-кнопка UITableView - PullRequest
0 голосов
/ 19 сентября 2018

Мне удалось выполнить стандартную кнопку действия (т. Е. Удалить) через uitableview с использованием метода delegate trailingSwipeActionsConfigurationForRowAt.

Моя проблема в основном пытается заменить кнопку действиянапример, с пользовательской кнопкой, которая имеет отступ между ячейкой и кнопкой действия, имеет закругленные края и вставлена ​​в ячейку.

Не удалось найти никаких отведений, и любые мысли будутоценил ..

Ниже желаемая цель: enter image description here

    func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
    let delete = UIContextualAction(style: .normal, title: "") { (action, view, completion) in
        print("Delete Pressed")
        completion(true)
    }

    delete.backgroundColor = UIColor.clear
    delete.image = #imageLiteral(resourceName: "trash")

    let config = UISwipeActionsConfiguration(actions: [delete])
    config.performsFirstActionWithFullSwipe = false

    return config
}

func tableView(_ tableView: UITableView, willBeginEditingRowAt indexPath: IndexPath) {
    tableView.subviews.forEach { subview in
        if (String(describing: type(of: subview)) == "UISwipeActionPullView") {
            if (String(describing: type(of: subview.subviews[0])) == "UISwipeActionStandardButton") {
                if let actionButtonCGRect = actionButtonCGRect {
                    subview.subviews[0].bounds = actionButtonCGRect
                } else {
                    actionButtonCGRect = subview.subviews[0].frame.insetBy(dx: 0, dy: 10)
                    subview.subviews[0].bounds = actionButtonCGRect!
                }

                subview.subviews[0].layer.cornerRadius = 10
                subview.subviews[0].clipsToBounds = true
                subview.subviews[0].backgroundColor = UIColor.red
            }
        }
    }
}
...