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