Skip to content

SimformSolutionsPvtLtd/SSSwiftUISpinnerButton

Repository files navigation

SSSwiftUISpinnerButton

SSSwiftUISpinnerButton is an open-source library in SwiftUI to add different spinning animation to button.

Platform swiftUI Swift Version License PRs Welcome

Alt text

Features!

  • Various spinner animation styles
  • Rounded button on spinning animation

Requirements

  • iOS 13.0+
  • Xcode 11+

Installation

CocoaPods

  • You can use CocoaPods to install SSSwiftUISpinnerButton by adding it to your Podfile:

     use_frameworks!
     pod 'SSSwiftUISpinnerButton'
    
  • Import SSSwiftUISpinnerButton in your file:

     import SSSwiftUISpinnerButton
    

Manually

  • Download and drop SSSwiftUISpinnerButton/Sources folder in your project.
  • Congratulations!

Swift Package Manager

  • When using Xcode 11 or later, you can install SSSwiftUISpinnerButton by going to your Project settings > Swift Packages and add the repository by providing the GitHub URL. Alternatively, you can go to File > Swift Packages > Add Package Dependencies...

     dependencies: [
         .package(url: "https://github.com/mobile-simformsolutions/SSSwiftUISpinnerButton.git", from: "1.0.0")
     ]
    

Usage Examples

Add Spinner Button

  • Add state variable to manage spinner button start and stop animation

    @State var isSpinnerButtonAnimating: Bool = false
    
  • Add Spinner button:

    SpinnerButton(buttonAction: {
             // Your button action code here
         }, isAnimating: $isSpinnerButtonAnimating, builder: {
             // Add any view or content in button if required
             HStack {
                   Text("Save")
                     .foregroundColor(.white)
             }
         }
     )
    

Start Animation

  • Animation will start as soon as you will tap on the button (isSpinnerButtonAnimating state variable will be set true).

Stop Animation

  • To stop the spinner button animation, simply toggle the state variable isSpinnerButtonAnimating value.

    isSpinnerButtonAnimating.toggle()
    

Spinner button animation style

  • You can select from different animation styles

  • Every animation style has properties such as count, size, etc which can be modified.

    SpinnerButton(buttonAction: {
             /// Action to perform
       }, isAnimating: $isSpinnerButtonAnimating, 
          animationType: SpinnerButtonAnimationStyle.lineSpinFade(count: 8, width: 0)) {
               /// Add content in button
       }
    

Spinner button customisation

  • You can modify view of the spinner button using SpinnerButtonViewStyle

  • Initialise variable with type SpinnerButtonViewStyle to design button:

    private var buttonStyleWithBasicDesign: SpinnerButtonViewStyle = SpinnerButtonViewStyle(
          width: 300, 
          height: 50, 
          cornerRadius: 5, 
          backgroundColor: .black, 
          spinningButtonBackgroundColor: .black, 
          spinningStrokeColor: .white
    )
    
  • Assign it to buttonstyle:

    SpinnerButton(buttonAction: {
            /// Action to perform
       }, isAnimating: $isSpinnerButtonAnimating, 
          buttonStyle: buttonStyleWithBasicDesign,
          animationType: SpinnerButtonAnimationStyle.lineSpinFade(count: 8, width: 0)) {
            /// Add content in button
       }
    

Swift Library:

Meta

  • Distributed under the MIT license. See LICENSE for more information.

Inspired By: