Giter VIP home page Giter VIP logo

animatedtabbar's Introduction

header demo

Animated Tab Bar

AnimatedTabBar is a tabbar with number of preset animations written in pure SwiftUI


We are a development agency building phenomenal apps.




Twitter Version Carthage Compatible License Platform

Usage

  1. Add an Int to store current selection
  2. Pass your buttons to AnimatedTabBar using one of 2 constructors. For the first one you can pass any view types:
import AnimatedTabBar

AnimatedTabBar(selectedIndex: $selectedIndex) {
    TabButton1()
    TabButton2()
    TabButton3()
}

For the second one views must have the same type, or be manually converted to AnyView

AnimatedTabBar(selectedIndex: $selectedIndex, views: [TabButton1(), TabButton2(), TabButton3()])

Required parameters

selectedIndex - binding to current index
views - buttons to display in a tabbar

Available customizations - modifiers

use customize closure in popup modifier:

barColor - Color of the tabbar itself selectedColor - Selected tab color (use template rendering for this color to be applied properly)
unselectedColor - Unselected tab color
ballColor - Ball indicator color
verticalPadding - Space from buttons to bar's top and bottom edges
cornerRadius - Applied to tabbar background color
ballAnimation - Default is .easeOut(duration: 0.6): Animation curve to apply to ball motion
indentAnimation - Animation curve for growing/shrinking of the indent in the tabbar
buttonsAnimation - Animation curve for applying color to tab buttons

ballTrajectory - Options for ball indicator animation paths:

  • parabolic - Jump to selected button following a parabolic arc
  • teleport - Disappear and quickly re-appear above selected tab
  • straight - Slide to selected tab

Built-in animatable tab buttons

By default tabs only have a simple animation of color, but you can customize that. This library has two built-in button types you can use out-of-the-box: DropletButton and WiggleButton, and a super custom ColorButton type in Example project. Please feel free to use them in your projects or build your own buttons on top of them.

Examples

To try AnimatedTabBar examples:

  • Clone the repo https://github.com/exyte/AnimatedTabBar.git
  • Open terminal and run cd <AnimatedTabBarRepo>/Example/
  • Run pod install to install all dependencies
  • Run open AnimatedTabBarExample.xcworkspace/ to open project in the Xcode
  • Try it!

Installation

dependencies: [
    .package(url: "https://github.com/exyte/AnimatedTabBar.git")
]

To install AnimatedTabBar, simply add the following line to your Podfile:

pod 'ExyteAnimatedTabBar'

To integrate AnimatedTabBar into your Xcode project using Carthage, specify it in your Cartfile

github "Exyte/AnimatedTabBar"

Requirements

  • iOS 16+
  • Xcode 14+

Acknowledgements

Many thanks to Yeasin Arafat for their beautiful original work that we recreated with SwiftUI.

Our other open source SwiftUI libraries

PopupView - Toasts and popups library
Grid - The most powerful Grid container
ScalingHeaderScrollView - A scroll view with a sticky header which shrinks as you scroll.
MediaPicker - Customizable media picker
ConcentricOnboarding - Animated onboarding flow
FloatingButton - Floating button menu
ActivityIndicatorView - A number of animated loading indicators
ProgressIndicatorView - A number of animated progress indicators
SVGView - SVG parser
LiquidSwipe - Liquid navigation animation

animatedtabbar's People

Contributors

f3dm76 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.