Programming language: Swift
License: MIT License
Tags: UI     Button     Control     iOS     Swift    
Latest version: v4.3.5

NKButton alternatives and similar libraries

Based on the "Button" category.
Alternatively, view NKButton alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of NKButton or a related project?

Add another 'Button' Library



Version License Platform Swift

A fully customizable UIButton


To run the example project, clone the repo, and run pod install from the Example directory first.



NKButton is available through Swift Package Manager (Recommended) and CocoaPods:

pod 'NKButton'


Creation and basic customization:

let button = NKButton()
button.title = "Button"
button.setTitleColor(.black, for: .normal) // set title color for normal state
button.setTitleColor(.white, for: .highlighted) // set title color for highlight state
button.setTitleFont(normalFont, for: .normal)
button.setTitleFont(boldFont, for: .highlight)
button.setBackgroundColor(.blue, for: .normal) // set background color for normal state
button.setBackgroundColor(.green, for: .highlighted) // set background color for highlight state
button.spacing = 10.0 // space between icon and title
button.imageAlignment = .top // icon alignment
button.underlineTitleDisabled = true // no underline text when `Settings > Accessibility > Button Shapes` is ON
button.isRoundedButton = true
button.cornerRadius = 10.0
button.extendSize = CGSize(width: 50, height: 20) // size that will be included in sizeThatFits

Add border:

button.setBorderColor(.black, for: .normal) // set border color for normal state
button.setBorderColor(.white, for: .highlighted) // set border color for highlight state
button.setBorderSize(1.0, for: .normal) // border stroke size
button.setBorderSize(2.0, for: .highlighted)

Add shadow:

button.setShadowColor(.blue, for: .normal) // set shadow color for normal state
button.setShadowColor(.green, for: .highlighted) // set shadow color for highlight state
button.shadowOffset = CGSize(width: 0, height: 5)
button.shadowOpacity = 0.6
button.shadowRadius = 10

Add gradient color:

button.setGradientColor([UIColor(white: 1.0, alpha: 0.5), UIColor(white: 1.0, alpha: 0.0)], for: .normal) // set gradient color for normal state
button.setGradientColor([UIColor(white: 1.0, alpha: 0.0), UIColor(white: 1.0, alpha: 0.5)], for: .highlighted) // set gradient color for highlight state

Set loading state:

button.loadingIndicatorStyle = .ballBeat // loading indicator style
button.loadingIndicatorAlignment = .atImage // loading indicator alignment
button.hideImageWhileLoading = true
button.hideTitleWhileLoading = false

button.isLoading = true // show loading indicator in the button, and button will be disabled automatically until setting isLoading = false


button.startFlashing(flashDuration: 0.25, intensity: 0.9, repeatCount: 10)

Subscript syntax:

button.titleColors[.normal] = .black
button.titleFonts[.normal] = normalFont
button.titleFonts[.highlight] = boldFont
button.backgroundColors[.normal] = .white
button.backgroundColors[.highlight] = .yellow
button.borderColors[.normal] = .gray
button.borderColors[[.highlight, .selected]] = .black
button.shadowColors[.normal] = .black


NKButton uses NVActivityIndicatorView for loading indicator, so it currently has 32 animation types.

NKButton uses FrameLayoutKit for content layout so you can customize the layout easily


Nam Kennic, [email protected]


NKButton is available under the MIT license. See the LICENSE file for more info.

*Note that all licence references and agreements mentioned in the NKButton README section above are relevant to that project's source code only.