自定义表格单元格上前/后滑动动作的更改高度

问题描述 投票:1回答:2

我目前正在开发Swift 4 iOS应用程序。我有一个自定义表格单元格,该表格单元格显示在卡片视图中(请参见下面的示例屏幕截图)。

当我在一行上实现SwipeActions时,滑动菜单的背景颜色的高度占据了单元格行的全部高度。

我希望它只是卡片视图的高度。我应该补充一点,每行高度不同,因为它们包含不同长度的小文本。有没有办法做到这一点?

Example of card view

ios swift uiswipegesturerecognizer swipe-gesture
2个回答
0
投票

这是不可能的。寻找另一种自定义方法。


0
投票

存在替代方法。您可以更改大小,但是它是旧模式,例如更改高度(view.size.height= (newvalue))。要更改位置,请使用(view.frame.origin.y = (newvalue))。它将在静态高度单元和iOS> = 11中工作。这不适用于动态高度单元。在tableviewcell的委托方法中进行这些更改

 func tableView(_ tableView: UITableView, willBeginEditingRowAt indexPath: IndexPath) {

        if let cell = tableView.cellForRow(at: indexPath) as? TempcellTableViewCell{
            if let spvcell = cell.superview{
                for svswipe in spvcell.subviews{
                    let typeview = type(of: svswipe.self)
                    if typeview.description() == "UISwipeActionPullView"{
                        svswipe.frame.size.height = 100//size you want
                        svswipe.frame.origin.y = 5
                    }
                }
            }   
        }
    }

leadingSwipeActionsConfigurationForRowAt/trailingSwipeActionsConfigurationForRowAt的功能。在返回UISwipeActionsConfiguration对象之前进行以下更改。

 func tableView(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
        let Cancel = UIContextualAction.init(style: .normal, title: "Cancel") { (action, view, nil) in
             print("Cancel")
         }
         Cancel.backgroundColor = UIColor.red

         let config = UISwipeActionsConfiguration.init(actions: [Cancel])
         config.performsFirstActionWithFullSwipe = false // Prevent swiping

         tableView.reloadRows(at: [indexPath], with: .none)

         return config
    }

此解决方案对我有用:D ...希望这个答案可以对您有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.