CreditCardRow 3.2.0

CreditCardRow 3.2.0

测试已测试
语言语言 SwiftSwift
许可 MIT
发布上次发布2019年6月
SPM支持 SPM

Mathias ClaassenMauricio CousillasDiego ErnstSantiago Fernandez 维护。



CreditCardRow

Build status Platform iOS Swift 2 compatible Carthage compatible CocoaPods compatible License: MIT

Xmartlabs SRL 创建。

内容

简介

CreditCardRow 是 Eureka 的自定义行,用户可以在此输入信用卡、其到期日期以及 CVV/CVC 值。它具有默认的 UI 设计,但可以轻松更改(几乎)以适应其他任何设计。

用法

import Eureka
import CreditCardRow

class ViewController: FormViewController {

    override func viewDidLoad() {
        super.viewDidLoad()


        // Append the default CreditCardRow and my custom MyCreditCardRow
        form +++ Section()
            <<< CreditCardRow()
    }
}

需求

  • iOS 9.3+
  • Xcode 10.2+

参与

在贡献之前,请查看CONTRIBUTING文件以获取更多信息。

如果您在应用程序中使用CreditCardRow,我们很想了解一下!请通过twitter联系我们。

示例

按照以下步骤运行示例项目

  • 克隆CreditCardRow仓库
  • 在下载的文件夹中打开终端并运行carthage update
  • 打开CreditCardRow工作空间
  • 运行示例项目。

安装

CocoaPods

CocoaPods是Cocoa项目的依赖管理器。

要安装CreditCardRow,只需将以下行添加到您的Podfile

pod 'CreditCardRow', '~> 3.2'

Carthage

Carthage是Cocoa的一个简单、分散的依赖管理器。

要安装CreditCardRow,只需将以下行添加到您的Cartfile中

github "EurekaCommunity/CreditCardRow" ~> 3.0

自定义

如果一行不具可定制性,那么它就不值得什么。因此,此行的目标是尽可能地可定制。理想情况下,您应该能够使用这里实现的所有逻辑,再加上一个完全不同的设计。您还应该能够轻松地切换一些基本的行为。

对于像字体、颜色、边距、分隔符这样的基本样式,您应该使用cellSetupcellUpdate。对于更复杂的东西,还有其他方法来创建您想要的内容。

CreditCardRow包括行导航,用户可以通过在单元格的accessoryView中点击按钮来从一张字段导航到下一张字段。如果您更改文本字段的顺序,则还应覆盖行导航功能

CreditCardRow参数

CreditCardRow以下变量可以被使用/修改

  • var numberSeparator: String = " ":信用卡号的分隔符。支持多字符字符串,例如" - "。
  • var expirationSeparator: Character = "/":在到期字段中月份和年份数字之间的分隔符。
  • var maxCVVLength: Int = 4:CVV/CVC字段的长度最大为4。
  • var maxCreditCardNumberLength = 19:信用卡号的最大长度。根据ISO 7812-1,信用卡长度可达19位。6位IIN,12位账户数字和一位校验数字。

例如,您可以这样做

<<< CreditCardRow() {
      $0.numberSeparator = "-"
      $0.expirationSeparator = "-"
      $0.maxCreditCardNumberLength = 16
      $0.maxCVVLength = 3
  }

CreditCardCell参数

CreditCardCell有以下变量(它们都是端点,可以从nib文件中连接)

  • var horizontalSeparator: UIView?:原始单元格中数字字段和到期以及CVV字段之间的水平分隔符
  • var verticalSeparator: UIView?:原始单元格中到期和CVV字段之间的垂直分隔符
  • var numberField: PaddedTextField!:信用卡号的文本字段
  • var expirationField: PaddedTextField?:信用卡到期日期的文本字段。这是一个可选变量。您可以来实现一个没有expirationField的单元格
  • var cvvField: PaddedTextField?:CVV值的文本字段。这个文本字段也是可选的。

PaddedTextField是UITextField的子类,实现了UITextField文本矩形的填充。

horizontalSeparatorverticalSeparator取决于默认设计。您可能不会使用它们,如果创建自己的设计。此外,由于expirationFieldcvvField是可选的,您可以创建一个只包含信用卡号的单元格,例如(您可以在示例项目中找到它)

创建自定义nib文件

您可能想要按照自己的设计。要完成这个任务,您应遵循以下步骤

  • 创建一个用户界面xib文件,并使用Xcode的Interface Builder进行编辑。您应该添加一个简单的UITableViewCell,并指定它的类是CreditCardCell。确保该类的模块显示为CreditCardRow

  • 为信用卡的号码添加一个UITextField。如果您还想添加信用卡的到期日期和CVV/CVC值的UITextField。

  • 将这些UITextField连接到CreditCardCell.swift文件中对应的输出接口

  • 自定义这些UITextField的内部导航方式(如果您已更改了字段的顺序。)

  • 指定您想使用新创建的nib文件。您可以通过两种方式来完成这项操作

    • 使用RowDefaults:如果您只想在您的应用程序中使用自定义的CreditCardRow,请使用此方法。
     CreditCardRow.defaultRowInitializer = {
             $0.cellProvider = CellProvider<CreditCardCell>(nibName: "CustomCell", bundle: nil)
         }
    • 或者创建一个自定义的行子类,继承自_CreditCardRow
     final class MyCreditCardRow: _CreditCardRow, RowType {
         required init(tag: String?) {
             super.init(tag: tag)
             cellProvider = CellProvider<CreditCardCell>(nibName: "CustomCell", bundle: nil)
         }
     }

扩展或覆盖CreditCardCell功能

有时候,创建自定义nib文件不够;您还需要子类化并更改一些功能。一个例子是如果您改变了文本字段在用户界面中的顺序,或者移除了expirationFieldcvvField,并希望更改行导航。在这种情况下,您应该首先创建一个子类CreditCardCell并覆盖inputAccessoryView的方法。

class MyCreditCardCell: CreditCardCell {
    override var inputAccessoryView: UIView? {
        // customize the accessoryView. Have a look at its superclass's implementation
        return super.inputAccessoryView
    }
}

您可以通过覆盖某些方法或变量来改变任何行为。

为了使用这个MyCreditCardCell,您需要在nib文件中指定正在使用此类,并且必须将CreditCardRowcellProvider更改为使用您的自定义nib文件(如您在前一节中所做的)。

作者

路线图上的有哪些内容?

可能添加到CreditCardRow中的内容

  • 实现一些Eureka验证
    • 添加SwiftLuhn验证

变更日志

这可以在CHANGELOG.md文件中找到。