A text input view for entering pin code.
- something...
SurfaceView is used to detect a user gesture. ItemView is Appearance. You can customize ItemView.
private class ContainerItemView<T: UIView & ItemType>: UIView { var itemView: T private let surfaceView: UIView = .init() private var didTapHandler: (() -> ())? }
To create your customize ItemView, you create a view conforming to ItemType.
public protocol ItemType { var text: Character? { get set } var isHiddenCursor: Bool { get set } func set(appearance: Appearance) }
About to set appearance.
public struct Appearance { } pinCodeInputView.set(appearance: )
import PinCodeInputView
// initialize let pinCodeInputView: PinCodeInputView<ItemView> = .init( digit: 6, itemSpacing: 8, itemFactory: { return ItemView() }) view.addSubview(pinCodeInputView) // set appearance pinCodeInputView.set( appearance: .init( itemSize: .init(width: 44, height: 68), font: .systemFont(ofSize: 28, weight: .bold), textColor: .white, backgroundColor: .darkGray, cursorColor: .blue, cornerRadius: 8 ) ) // text handling pinCodeInputView.set(changeTextHandler: { text in print(text) })
final class CustomItemView: UIView, ItemType { var text: Character? var isHiddenCursor: Bool func set(appearance: Appearance) {} // ... } let pinCodeInputView: PinCodeInputView<CustomItemView> = .init( digit: 6, itemSpacing: 8, itemFactory: { return CustomItemView() })
For Installing with Carthage, and add it to your Cartfile.
github "shima11/PinCodeInputView"
$ carthage update
For installing with CocoaPods, and add it to your Podfile.
pod "PinCodeInputView"
$ pod update
Licence MIT


