A collection of loading buttons and their styling written in Swift.
You may see the following Medium article for detailed explanation of creating loading buttons.
Light mode | Dark mode |
---|---|
- The example gives you 9 choices of loading indicators with the loading button.
- The IndicatorProtocol clearly defines the functions and properties. You can refer to it and customize your own.
- The LoadingButton class is made to be open, from which you can easily inherit and create your own.
- Swift 5.0
- iOS 11.0+
LoadingButtons project is available via CocoaPods. To install it, simply add the following line to your Podfile:
$ pod 'MHLoadingButton'
Add LoadingButtons as dependency in your Package.swift
import PackageDescription
let package = Package(
name: "YourPackage",
dependencies: [
.Package(url: "https://github.com/twho/loading-buttons-ios.git", majorVersion: 0),
]
)
If you don't use CocoaPods or Swift Package Manager, you can download the entire project then import all the source files and use them in your project.
// The frame is default to zero. You need to use AutoLayout to resize it.
// Otherwise, you can specify the frame in initializer.
if #available(iOS 13.0, *) {
// This is the new initializer for iOS 13 dark/light mode.
// The syste colors will be used.
btnLoading = LoadingButton(text: "Button", buttonStyle: .outline) // Outlined button
btnLoading = LoadingButton(text: "Button", buttonStyle: .fill) // Filled button
} else {
// Custom color initializer
btnLoading = LoadingButton(text: "Button", textColor: .black, bgColor: .white)
}
btnLoading.indicator = UIActivityIndicatorView()
Light mode | Dark mode |
---|---|
btnLoading.indicator = MaterialLoadingIndicator(color: .gray)
Light mode | Dark mode |
---|---|
btnLoading.indicator = BallPulseSyncIndicator(color: .gray)
Light mode | Dark mode |
---|---|
btnLoading.indicator = BallSpinFadeIndicator(color: .gray)
Light mode | Dark mode |
---|---|
btnLoading.indicator = LineScalePulseIndicator(color: .gray)
Light mode | Dark mode |
---|---|
btnLoading.indicator = LineScaleIndicator(color: .gray)
Light mode | Dark mode |
---|---|
btnLoading.indicator = BallPulseIndicator(color: .gray)
Light mode | Dark mode |
---|---|
btnLoading.indicator = BallBeatIndicator(color: .gray)
Light mode | Dark mode |
---|---|
btnLoading.indicator = LineSpinFadeLoader(color: .gray)
Light mode | Dark mode |
---|---|