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


