EVSlidingTableViewCell 3.0.1

EVSlidingTableViewCell 3.0.1

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布上次发布2021 年 4 月
SPM支持 SPM

Maintained by Eric Vennaro.



  • 作者
  • Eric Vennaro

EVSlidingTableViewCell

CI Status Version License Platform

关于

EVSlidingTableViewCell 是一个自定义的 UITableViewCell,实现了类似于 GChat 的“滑动以显示”功能。它支持 1 到 4 个可配置的操作按钮,用户定义的叠加层滑动时将显示这些按钮。

Screenshot0

使用

要运行示例项目,克隆仓库,并在 Example 目录中运行 pod install

要求

  • Swift 4.0+
  • iOS 9.0+

安装

EVSlidingTableViewCell可以通过CocoaPods获取。要安装它,只需将以下行添加到Podfile中即可:

pod "EVSlidingTableViewCell"

同样包括

user_frameworks!

文档

阅读文档。由jazzy生成

入门

1. 创建遮罩视图

创建您的自定义遮罩视图。这是您想要滑动以显示开关选项的视图。请确保重写setupUI方法,因为它是由DrawerView调用的,并允许轻松在单元格中设置UIAttributes。viewParameters类型来自此方法,这应该是您用于设置遮罩视图的通用对象。

import EVSlidingTableViewCell
    class OverlayView: EVOverlayView {
        @IBOutlet private weak var titleLabel: UILabel!
        //override this method
        override func setupUI(){
        }
    }
}

2. 在视图控制器中注册单元格

将自定义单元格注册到UITableView中,就像任何其他自定义单元格一样。

contactsTableView.register(SlidingTableViewControllerCell<MyStruct>.self, forCellReuseIdentifier: SlidingTableViewControllerCell<Any>.reuseIdentifier)

扩展SlidingTableViewCellDelegate

extension ViewController: SlidingTableViewCellDelegate { }

最后,定义类型为DrawerViewClosureType的闭包,这些闭包在抽屉视图按钮点击时执行。您可以根据需要创建任何闭包。遵循GChat主题,以下包括了一些示例。

func emailClosure() -> DrawerViewClosureType {
    func openEmail(text: String) -> (Bool) {
        UIApplication.sharedApplication().openURL(NSURL(string: "mailto:\(text)")!)
        return true
    }

    return openEmail
}


func phoneClosure() -> DrawerViewClosureType {
    func openPhone(text: String) -> (Bool) {
        let phoneNumber: String = text.componentsSeparatedByCharactersInSet(NSCharacterSet.decimalDigitCharacterSet().invertedSet).joinWithSeparator("")
        UIApplication.sharedApplication().openURL(NSURL(string: "tel://\(phoneNumber)")!)
        return true
    }

    return openPhone
}

func textClosure() -> DrawerViewClosureType {
    func openMessenger(text: String) -> (Bool) {
        let phoneNumber = text.componentsSeparatedByCharactersInSet(NSCharacterSet.decimalDigitCharacterSet().invertedSet).joinWithSeparator("")
        UIApplication.sharedApplication().openURL(NSURL(string: "sms:+\(phoneNumber)")!)
        return true
    }

    return openMessenger
}

项目描述

EVConstants

包含项目中使用到的常量的结构体。

  • 公开
    • bundle—-> pod 的标识符(EVSlidingTableViewCell)
    • evTableViewCell—-> UITableViewCell 的 nib 文件

ContactItem

表示抽屉视图中图标之一的内部 UIView,其中包含在 buttonClick 上执行的由用户定义的闭包。每个 ContactItem 都从 DrawerViewOption 获取其信息。

DrawerViewOption

包含 ContactItem 的值的结构体。根据要在 DrawerView 中显示的 ContactItem 的数量构建一个 DrawerViewOptions 的数组(必须在 1 到 4 之间)。

  • 参数
    • closure—-> 类型为 DrawerViewClosure 的闭包,在 ContactItems IBAction 上执行
    • valueForButtonAction—-> 输入闭包的 String
    • textForLabel—-> ContactItem 显示的标签的 String
    • buttonImage—-> 要在 ContactItem 按钮上显示的 UIImage

SlidingTableViewControllerCell

允许覆盖滑动并显示抽屉的 UITableViewCell

  • 公开方法
    • setCellWithAttributes(overlayParameters overlayParameters: OverlayDictionaryType, drawerViewOptions: DrawerViewOptionsType, overlayView overlay: EVOverlayView)
    • overlay 放在 drawer 单元格上,根据 drawerViewOptions 建立抽屉视图图标,并将 overlayParameters 传递给用户定义的覆盖。通过调用 setUI() 启动覆盖视图的 UI 设置。
    • resetOverlay() 将覆盖重置为中心位置。

SlidingTableViewDelegate

公开协议,作为 SlidingTableViewCell 的代理,示例项目包含完整示例实现。

  • 方法
    • didSelectRowIn(_ tableView: UITableView, atIndexPath indexPath: NSIndexPath)
      • 当单元格被选中时在打开的单元格上调用 resetOverlay
      • 具有默认实现,可以被覆写

EVOverlayView

符合 EVOverlayProtocol 的 UIView。当你创建你的覆盖时,扩展 EVOverlay,```class YourOverlay: EVOverlayView `{}````.

  • 参数
    • viewParameters -> T 包含了在 cell.setCellWithAttributes(...) 方法调用中从 overlayParameters 所有用户定义的属性
  • 方法
    • setupUI() -> 覆盖此方法以为你的覆盖设置自定义布局,参见示例项目中的 OverlayView 以获取示例实现

扩展

  • UITableView -> 添加了用于检查覆盖是否存在或隐藏的存储属性
  • UIView -> 添加了方法 .loadFromNib(bundle),它在示例项目中使用,用于从 nib 加载文件,参见 Stack Overflow 答案

类型别名

  • DrawerViewOptionType -> [DrawerViewOption]
  • DrawerViewClosureType -> ((String) -> Bool)

作者

Eric Vennaro, [email protected]

许可

EVSlidingTableViewCell 根据 MIT 许可证 提供。有关更多信息,请参阅 LICENSE 文件。

版权 © 2016-现在 Eric Vennaro。