SimpleCheckbox aims to accomplish what other ios checkbox controls haven't. To be simple. There's no animations, no IBDesignable to slow down interface builder, and no performance heavy draw methods.
π Features
β
Requirements
- Xcode 11
- iOS 10+
- Swift 5.1
π¨βπ» Installation
Manual
Just drag Checkbox.swift into your project to start using it.
Carthage
- Add
github "BeauNouvelle/SimpleCheckbox"
to yourCartfile
.
You can learn more about Carthage and get help setting it up here.
Cocoapods
Podspec is present, however with SPM out for quite a while now, Cocoapods is no longer officially supported. Latest supported version of SimpleCheckbox is 2.2.2
Swift Package Manager
- Add
https://github.com/BeauNouvelle/SimpleCheckbox.git
to your package file.
π©βπ³ Usage
You can create a new Checkbox either programatically:
let checkbox = Checkbox(frame: CGRect(x: 50, y: 50, width: 25, height: 25))
Or using interface builder by dragging a UIView
into your view controller and assigning its class to Checkbox
.
After hooking up an outlet you can begin customization.
π©βπ¨ Customization
Border
Border Color
checkbox.checkedBorderColor = .blue
checkbox.uncheckedBorderColor = .black
Border Style
checkbox.borderStyle = .circle
checkbox.borderStyle = .square
Checkmark
Checkmark Color
checkbox.checkmarkColor = .blue
Checkmark Style
checkbox.checkmarkStyle = .circle
checkbox.checkmarkStyle = .square
checkbox.checkmarkStyle = .cross
checkbox.checkmarkStyle = .tick
Emoji
checkbox.emoji = "β"
NOTE: Setting the emoji value will cause simple checkbox to ignore the checkmarkStyle. Any string will work, but only 1-3 characters may be displayed.
Haptic Feedback
checkbox.useHapticFeedback = true
Events
There are two methods for detecting when a tap event has occured and the isChecked
property has changed.
Add Target
checkbox.addTarget(self, action: #selector(checkboxValueChanged(sender:)), for: .valueChanged)
.......
@objc func checkboxValueChanged(sender: Checkbox) {
print("checkbox value change: \(sender.isChecked)")
}
Closure
checkbox.valueChanged = { (isChecked) in
print("checkbox is checked: \(isChecked)")
}
Touch Area
Checkboxs can sometimes appear smaller than their UIButton and UISwitch counterparts which can make them difficult to activate.
SimpleCheckbox has a way for you to tune the touch raduis to extend beyond its frame. Setting increasedTouchRadius will increase the touch radius by that amount.
checkbox.increasedTouchRadius = 5 // Default