Coder Social home page Coder Social logo

exyte / animatedtabbar Goto Github PK

View Code? Open in Web Editor NEW
291.0 5.0 20.0 241 KB

A tabbar with a number of preset animations written in pure SwiftUI

Home Page: https://exyte.com/

License: MIT License

Ruby 1.52% Swift 97.41% Objective-C 1.07%
animation ios-component swift swiftui swiftui-components tabbar tabbarcontroller

animatedtabbar's Introduction

     

demo

Animated Tab Bar

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

Read Article »

SPM Compatible Cocoapods Compatible Carthage Compatible License: MIT

Usage

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

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

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

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

Required parameters

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

Available customizations - modifiers

use the customize closure in the 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 the buttons to the bar's top and bottom edges
cornerRadius - The corner radius applied to the tabbar background color
ballAnimation - Animation curve to apply to ball motion, default is .easeOut(duration: 0.6) indentAnimation - Animation curve for growing/shrinking of the indent in the tabbar
buttonsAnimation - Animation curve for applying color to tab buttons
didSelectIndex - Closure which gets called on every tab tap

ballTrajectory - Options for ball indicator animation paths:

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

Built-in animatable tab buttons

By default tabs only have a simple color animation, 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 the Example project. Please feel free to use them in your projects or build your own buttons on top of them.

Examples

To try the 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 the project in 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
Chat - Chat UI framework with fully customizable message cells, input view, and a built-in 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 nikita-afonasov avatar villygreen avatar zapletnev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

animatedtabbar's Issues

Unable to use binding

Just downloaded the library and was setting up a basic tab bar to mess around with.

`import SwiftUI
import AnimatedTabBar

struct AnimatedTabBar: View {
@State var selectedIndex = 0
var body: some View {
AnimatedTabBar(selectedIndex: $selectedIndex)
}
}

struct AnimatedTabBar_Previews: PreviewProvider {
static var previews: some View {
AnimatedTabBar()
}
}`

However it is producing an error saying "Cannot convert value '$selectedIndex' of type 'Binding' to expected type 'Int', use wrapped value instead" and it wants me to to remove the binding. If I remove the binding the error goes away but I get a crash when I try to run the preview in the canvas.

Canvas Crash

When I attempt to run the canvas to preview a basic tab bar it is crashing...

`import SwiftUI
import AnimatedTabBar

struct AnimatedTabBar: View {
@State var selectedIndex = 0
var body: some View {
AnimatedTabBar(selectedIndex: $selectedIndex)
}
}

struct AnimatedTabBar_Previews: PreviewProvider {
static var previews: some View {
AnimatedTabBar()
}
}`

Here is the crash log...
Faith Church Prayer-2023-05-31-120535.txt

Doesn't work on iOS 16

I can't get this to render icons in iOS16 (17 works great). The example app also renders nothing on iOS16.

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.