A UIButton subclass that implements tap-to-toggle button text. (Like the camera flash and timer buttons)
Just create it with the states, and it's good to go:
let toggleButton = MultiToggleButton(image: myImage, states: ["First", "Second", "Last"])Get and set the current state:
let state = toggleButton.currentStateIndex
toggleButton.currentStateIndex = 0Add a tap action (in addition to the built-in state toggle):
toggleButton.action = { (sender) -> () in
    doStuff(sender.currentStateIndex)
}Set different colors for different states (nil uses the button's tintColor):
toggleButton.colors = [nil, .gray, .red]Set different images for different states:
toggleButton.images = [myFirstImage, mySecondImage, myLastImage]Or do it all at once:
let toggleButton = ToggleButton(
    images: [myFirstImage, mySecondImage, myLastImage],
    states: ["First", "Second", "Last"],
    colors: [nil, .gray, .red],
    action: { (sender) -> () in doStuff(sender.currentStateIndex) }
)pod 'MultiToggleButton'Legacy versions:
| Swift version | MultiToggleButton version | 
|---|---|
| 4.0 (Xcode 9.4) | pod 'MultiToggleButton', '~> 1.7.1' | 
| 3 | pod 'MultiToggleButton', '~> 1.5.2' | 
| 2.3 | pod 'MultiToggleButton', '~> 1.4.0' | 
dependencies: [
    .package(url: "https://github.com/yonat/MultiToggleButton", from: "1.8.8")
]