XLPagerTabStrip is a Container View Controller that allows us to switch easily among a collection of view controllers

Overview

XLPagerTabStrip

Build status Platform iOS Swift 5 compatible Carthage compatible CocoaPods compatible License: MIT

Made with ❤️ by XMARTLABS.

Android PagerTabStrip for iOS!

XLPagerTabStrip is a Container View Controller that allows us to switch easily among a collection of view controllers. Pan gesture can be used to move on to next or previous view controller. It shows a interactive indicator of the current, previous, next child view controllers.

Getting involved

  • If you want to contribute please feel free to submit pull requests.
  • If you have a feature request please open an issue.
  • If you found a bug or need help please check older issues, FAQ and threads on StackOverflow (Tag 'XLPagerTabStrip') before submitting an issue.

Before contribute check the CONTRIBUTING file for more info.

If you use XLPagerTabStrip in your app we would love to hear about it! Drop us a line on twitter.

Pager Types

The library provides 4 different ways to show the view controllers.

Button Bar

This is likely the most common pager type. It's used by many well-known apps such as instagram, youtube, skype, and many others.

Bar

This mode doesn't show a title neither an image. It only shows a bar that indicates the current view controller.

Twitter

A long time ago, the twitter app made use of this type of pager in the app main screen.

Segmented

This mode uses a UISegmentedControl to indicate which view controller is being displayed.

Usage

Basically, we just need to provide the list of child view controllers to show, and these view controllers should provide the information (title or image) that will be shown in the associated indicator.

Let's see the steps to do this:

Choose which type of pager we want to create

First, we must choose the type of pager we want to create. Depending on our choice, we will have to create a view controller that extends from one of the following controllers: TwitterPagerTabStripViewController, ButtonBarPagerTabStripViewController, SegmentedPagerTabStripViewController, BarPagerTabStripViewController.

All these built-in pager controllers extend from the base class PagerTabStripViewController. You can also make your custom pager controller by extending directly from PagerTabStripViewController in the event that no pager menu type fits your needs.

import XLPagerTabStrip

class MyPagerTabStripName: ButtonBarPagerTabStripViewController {
  ..
}
Connect outlets and add layout constraints

We strongly recommend using IB to set up our page controller views.

Drag a UIViewController into the storyboard and set up its class with your pager controller (MyPagerTabStripName). Drag a UIScrollView into your view controller view and connect PagerTabStripViewController containerView outlet with the scroll view.

Depending on which type of paging view controller you are working with you may have to connect more outlets.

For BarPagerTabStripViewController, we should connect barView outlet. barView type is UIView. ButtonBarPagerTabStripViewController requires us to connect buttonBarView outlet. buttonBarView type is ButtonBarView which extends from UICollectionView. SegmentedPagerTabStripViewController has a segmentedControl outlet; if the outlet is not connected the library try to set up the navigationItem titleView property using a UISegmentedControl. TwitterPagerTabStripViewController doesn't require us to connect any additional outlet.

The example project contains a example for each pager controller type and we can look into it to see how views were added and how outlets were connected.

Provide the view controllers that will appear embedded into the PagerTabStrip view controller

You can provide the view controllers by overriding func viewControllers(for: pagerTabStripController: PagerTabStripViewController) -> [UIViewController] method.

override public func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] {
  return [MyEmbeddedViewController(), MySecondEmbeddedViewController()]
}

The method above is the only method declared in PagerTabStripDataSource protocol. We don't need to explicitly conform to it since base pager class already does it.

Provide information to show in each indicator

Every UIViewController that will appear within the PagerTabStrip needs to provide either a title or an image. In order to do so they should conform to IndicatorInfoProvider by implementing func indicatorInfo(for pagerTabStripController: PagerTabStripViewController) -> IndicatorInfo which provides the information required to show the PagerTabStrip menu (indicator) associated with the view controller.

class MyEmbeddedViewController: UITableViewController, IndicatorInfoProvider {

  func indicatorInfo(for pagerTabStripController: PagerTabStripViewController) -> IndicatorInfo {
    return IndicatorInfo(title: "My Child title")
  }
}

For a detailed step-by-step guide about how to use the library, please check out this community blog post.

That's it! We're done! 🍻 🍻

Customization

Pager Behaviour

The pager indicator can be updated progressive as we swipe or at once in the middle of the transition between the view controllers. By setting up pagerBehaviour property we can choose how the indicator should be updated.

public var pagerBehaviour: PagerTabStripBehaviour
public enum PagerTabStripBehaviour {
    case common(skipIntermediteViewControllers: Bool)
    case progressive(skipIntermediteViewControllers: Bool, elasticIndicatorLimit: Bool)
}

Default Values:

// Twitter Type
PagerTabStripBehaviour.common(skipIntermediateViewControllers: true)
// Segmented Type
PagerTabStripBehaviour.common(skipIntermediateViewControllers: true)
// Bar Type
PagerTabStripBehaviour.progressive(skipIntermediateViewControllers: true, elasticIndicatorLimit: true)
// ButtonBar Type
PagerTabStripBehaviour.progressive(skipIntermediateViewControllers: true, elasticIndicatorLimit: true)

As you might have noticed, common and progressive enumeration cases have skipIntermediateViewControllers and elasticIndicatorLimit associated values.

skipIntermediateViewControllers allows us to skip intermediate view controllers when a tab indicator is tapped.

elasticIndicatorLimit allows us to tension the indicator when we reach a limit, I mean when we try to move forward from last indicator or move back from first indicator.

PagerTabStripDelegate & PagerTabStripIsProgressiveDelegate

Normally we don't need to implement these protocols because each pager type already conforms to it in order to properly update its indicator. However, there may be some scenarios when overriding a method may come in handy.

public protocol PagerTabStripDelegate: class {

    func updateIndicator(for viewController: PagerTabStripViewController, fromIndex: Int, toIndex: Int)
}

public protocol PagerTabStripIsProgressiveDelegate : PagerTabStripDelegate {

    func updateIndicator(for viewController: PagerTabStripViewController, fromIndex: Int, toIndex: Int, withProgressPercentage progressPercentage: CGFloat, indexWasChanged: Bool)
}

Again, the method invoked by the library depends on the pagerBehaviour value.

ButtonBar Customization

settings.style.buttonBarBackgroundColor: UIColor?
// buttonBar minimumInteritemSpacing value, note that button bar extends from UICollectionView
settings.style.buttonBarMinimumInteritemSpacing: CGFloat?
// buttonBar minimumLineSpacing value
settings.style.buttonBarMinimumLineSpacing: CGFloat?
// buttonBar flow layout left content inset value
settings.style.buttonBarLeftContentInset: CGFloat?
// buttonBar flow layout right content inset value
settings.style.buttonBarRightContentInset: CGFloat?

// selected bar view is created programmatically so it's important to set up the following 2 properties properly
settings.style.selectedBarBackgroundColor = UIColor.black
settings.style.selectedBarHeight: CGFloat = 5

// each buttonBar item is a UICollectionView cell of type ButtonBarViewCell
settings.style.buttonBarItemBackgroundColor: UIColor?
settings.style.buttonBarItemFont = UIFont.systemFont(ofSize: 18)
// helps to determine the cell width, it represent the space before and after the title label
settings.style.buttonBarItemLeftRightMargin: CGFloat = 8
settings.style.buttonBarItemTitleColor: UIColor?
// in case the barView items do not fill the screen width this property stretch the cells to fill the screen
settings.style.buttonBarItemsShouldFillAvailiableWidth = true
// only used if button bar is created programmatically and not using storyboards or nib files as recommended.
public var buttonBarHeight: CGFloat?

Important: Settings should be called before viewDidLoad is called.

override func viewDidLoad() {
   self.settings.style.selectedBarHeight = 2
   self.settings.style.selectedBarBackgroundColor = UIColor.white

   super.viewDidLoad()
}
Update cells when selected indicator changes

We may need to update the indicator cell when the displayed view controller changes. The following function properties help to accomplish that. Depending on our pager pagerBehaviour value we will have to set up changeCurrentIndex or changeCurrentIndexProgressive.

public var changeCurrentIndex: ((oldCell: ButtonBarViewCell?, newCell: ButtonBarViewCell?, animated: Bool) -> Void)?
public var changeCurrentIndexProgressive: ((oldCell: ButtonBarViewCell?, newCell: ButtonBarViewCell?, progressPercentage: CGFloat, changeCurrentIndex: Bool, animated: Bool) -> Void)?

Let's see an example:

changeCurrentIndexProgressive = { (oldCell: ButtonBarViewCell?, newCell: ButtonBarViewCell?, progressPercentage: CGFloat, changeCurrentIndex: Bool, animated: Bool) -> Void in
    guard changeCurrentIndex == true else { return }

    oldCell?.label.textColor = UIColor(white: 1, alpha: 0.6)
    newCell?.label.textColor = UIColor.white

    if animated {
        UIView.animate(withDuration: 0.1, animations: { () -> Void in
            newCell?.transform = CGAffineTransform(scaleX: 1.0, y: 1.0)
            oldCell?.transform = CGAffineTransform(scaleX: 0.8, y: 0.8)
        })
    }
    else {
        newCell?.transform = CGAffineTransform(scaleX: 1.0, y: 1.0)
        oldCell?.transform = CGAffineTransform(scaleX: 0.8, y: 0.8)
    }
}

Bar Type Customization

settings.style.barBackgroundColor: UIColor?
settings.style.selectedBarBackgroundColor: UIColor?
// barHeight is only set up when the bar is created programmatically and not using storyboards or xib files as recommended.
settings.style.barHeight: CGFloat = 5

Twitter Type Customization

settings.style.dotColor = UIColor(white: 1, alpha: 0.4)
settings.style.selectedDotColor = UIColor.white
settings.style.portraitTitleFont = UIFont.systemFont(ofSize: 18)
settings.style.landscapeTitleFont = UIFont.systemFont(ofSize: 15)
settings.style.titleColor = UIColor.white

Segmented Type Customization

settings.style.segmentedControlColor: UIColor?

Requirements

  • iOS 9.3+
  • Xcode 10.2+

Examples

Follow these 3 steps to run Example project: Clone XLPagerTabStrip repository, open XLPagerTabStrip workspace and run the Example project.

Installation

CocoaPods

CocoaPods is a dependency manager for Cocoa projects.

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

pod 'XLPagerTabStrip', '~> 9.0'

Carthage

Carthage is a simple, decentralized dependency manager for Cocoa.

To install XLPagerTabStrip, simply add the following line to your Cartfile:

9.0 ">
github "xmartlabs/XLPagerTabStrip" ~> 9.0

FAQ

How to change the visible child view controller programmatically

PagerTabStripViewController provides the following methods to programmatically change the visible child view controller:

func moveToViewController(at index: Int)
func moveToViewController(at index: Int, animated: Bool)
func moveTo(viewController: UIViewController)
func moveTo(viewController: UIViewController, animated: Bool)

How to migrate from Swift 2 to Swift 3

Check out our migration guide

Author

Change Log

This can be found in the CHANGELOG.md file.

Comments
  • Update to Swift 4

    Update to Swift 4

    Before submitting issues ...

    • Make sure you are using XLPagerTabStrip latest release or master branch version.
    • Make sure your Xcode version is the latest stable one.
    • Check if the issue was already reported or fixed. We add labels to each issue in order to easily find related issues. If you found a match add a brief comment "I have the same problem" or "+1".
    • Please do not use the issue tracker for personal support requests. Stack Overflow is a better place for that where a wider community can help you!

    When submitting issues, please provide the following information to help maintainers to fix the problem faster:

    • Environment: XLPagerTabStrip, Xcode and iOS version you are using.
    • In case of reporting errors, provide Xcode console output of stack trace or code compilation error.
    • Any other additional detail such as example code that you think it would be useful to understand, reproduce and solve the problem.
    opened by keyhan76 25
  • Linker Error message when compiling with xCode 8 when using Carthage

    Linker Error message when compiling with xCode 8 when using Carthage

    Hi I'm using version form Swift3 branch and when I try to compile with xCode 8 I got:

    "direct field offset for XLPagerTabStrip.ButtonBarPagerTabStripViewController.(buttonBarView.storage in _0CF27031E34C35EB5EAF50A7E0F72A93) : XLPagerTabStrip.ButtonBarView!?", referenced from: XLPagerTabStrip.ButtonBarPagerTabStripViewController.buttonBarView.setter : XLPagerTabStrip.ButtonBarView! in PGMediaContainerViewController.o

    How can I get rid of this error so the compilation will finish with success ?

    opened by MichalAlgor 22
  • View Controller Stretched

    View Controller Stretched

    Anyone is experiencing view controllers being stretched? When I select the a tab for the first time, the view is stretched, but if I click in something (like search bar), the view controller becomes normal.

    PS: This don't happen with the first view controller (first item on tab) for some reason...

    Stretched width:

    When I click on search bar, for example, the width becomes normal:

    opened by jhkersul 18
  • There will be wide space under buttonBarView when swipe to switch view controllers

    There will be wide space under buttonBarView when swipe to switch view controllers

    Hi,

    Recently, I updated to Swift 3 and upgrading to XLPagerTabStrip 6.0.0. I am using Xcode 8 and Swift 3.0.2 based codebase. And I found if I swipe to switch view controllers from left to right or from right to left, there was wide space under buttonBarView, like the red box in image below indicated, however, clicking items in buttonBarView would not cause such phenomenon. I tried to trace the containerView's content size, the "y" offset changed to -64 when using swipe, which is expected to be 0, so I think this would be the reason why there was wide space under buttonBarView. Then I wonder how this issue can be solved. Can someone be helpful, and I will be grateful.

    Thanks!

    iphone7plus type: awaiting response 
    opened by imadeit 16
  • How to go to a specific child view controller

    How to go to a specific child view controller

    Hello,

    I have 5 child viewcontroller. When in one of them I go to another view. From that view I want to be able to go back to that child viewcontroller (the one that I came from)

    Do you know how I can do to to go to a specific viewcontroller?

    Thank you for your attention.

    All the best.

    type: question 
    opened by pmendiburu 16
  • Can't connect 'containerView' and 'buttonBarView' outlets

    Can't connect 'containerView' and 'buttonBarView' outlets

    Hi! I'm trying to connect the outlets for containerView and buttonBarView, but this outlets doesn't exists on my class, only on it's parent (BaseButtonBarPagerTabStripViewController). But I can't connect, it just doesn't work.

    How can I proceed?

    screen shot 2016-03-11 at 2 53 36 pm type: question 
    opened by jhkersul 15
  • buttonBarView not show in ios 10.3.3

    buttonBarView not show in ios 10.3.3

    in ios 11 iphone 6 , buttonbarview showing img_934e196d52e1-1

    but in ios 10.3.3 iphone 5s img_0652

    I am confusing with it.I am use xlpagertabstrip 8.0 xcode 9.0. anyone can help me? thanks

    opened by huongtran84 14
  • ButtonBar style doesn't fill entire width

    ButtonBar style doesn't fill entire width

    I'm really confused by the documentation. I don't see any way without specifically setting a fixed value for self.settings.style.buttonBarItemLeftRightMargin to make the ButtonBar actually take up the full width like the examples in the README.

    All four of the animated .gif files at the top have the bar straight across with the tabs justifying to fill the entire width.

    Then the animated .gif for ButtonBar looks nothing like them and the one that does (Bar) has no text...

    Really confused why there's isn't a way to get a combination of the two?

    docs type: awaiting response 
    opened by bdrelling 14
  • Bar does not show up anymore

    Bar does not show up anymore

    After upgrading my Xcode to 8.0 and my project to Swift 2.3, the Bar indicating the current view controller in my Bar Button Pager does not show up in 2 out of the 3 places in which I use this feature. As far as I can tell, they are all configured the same except for slight variation in sizing of the height of the Button Bar View.

    I can still see the Indicator titles and functionality is fine.

    opened by Raymond26 14
  • How to remove gap between button bar view and container view?

    How to remove gap between button bar view and container view?

    Hello everyone. I founded the problem when I implement ButtonBarPagerTabStripViewController. I founded gap between button bar view and scroll view (container view) because I embed navigation bar to the view but when I remove navigation bar it's display perfectly. How does I solve it?

    gap-problem

    opened by dax-patuma 14
  • I've made the class of BaseButtonBarPagerTabStripViewController, connected containerview and buttonbarview outlets and receive this error:

    I've made the class of BaseButtonBarPagerTabStripViewController, connected containerview and buttonbarview outlets and receive this error:

    2016-06-13 18:24:36.765 PotSpot[1872:35255] Unknown class _TtC7PotSpot14MenuController in Interface Builder file. 2016-06-13 18:24:36.777 PotSpot[1872:35255] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIViewController 0x7f8970c380a0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key buttonBarView.' *** First throw call stack: ( 0 CoreFoundation 0x0000000106f2cd85 __exceptionPreprocess + 165 1 libobjc.A.dylib 0x0000000108f11deb objc_exception_throw + 48 2 CoreFoundation 0x0000000106f2c9c9 -[NSException raise] + 9 3 Foundation 0x00000001072fe19b -[NSObject(NSKeyValueCoding) setValue:forKey:] + 288 4 UIKit 0x0000000107b28d0c -[UIViewController setValue:forKey:] + 88 5 UIKit 0x0000000107d5f7fb -[UIRuntimeOutletConnection connect] + 109 6 CoreFoundation 0x0000000106e66890 -[NSArray makeObjectsPerformSelector:] + 224 7 UIKit 0x0000000107d5e1de -[UINib instantiateWithOwner:options:] + 1864 8 UIKit 0x0000000107b2f8d6 -[UIViewController _loadViewFromNibNamed:bundle:] + 381 9 UIKit 0x0000000107b30202 -[UIViewController loadView] + 178 10 UIKit 0x0000000107b30560 -[UIViewController loadViewIfRequired] + 138 11 UIKit 0x0000000107b30cd3 -[UIViewController view] + 27 12 UIKit 0x0000000107b8320c -[UINavigationController preferredContentSize] + 194 13 UIKit 0x0000000107b07712 -[UIPresentationController preferredContentSizeDidChangeForChildContentContainer:] + 59 14 UIKit 0x0000000107b03aa0 __56-[UIPresentationController runTransitionForCurrentState]_block_invoke + 95 15 UIKit 0x00000001079a1f62 _runAfterCACommitDeferredBlocks + 317 16 UIKit 0x00000001079b5e4c _cleanUpAfterCAFlushAndRunDeferredBlocks + 95 17 UIKit 0x00000001079c2147 _afterCACommitHandler + 90 18 CoreFoundation 0x0000000106e51c37 CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION + 23 19 CoreFoundation 0x0000000106e51ba7 __CFRunLoopDoObservers + 391 20 CoreFoundation 0x0000000106e477fb __CFRunLoopRun + 1147 21 CoreFoundation 0x0000000106e470f8 CFRunLoopRunSpecific + 488 22 GraphicsServices 0x000000010c660ad2 GSEventRunModal + 161 23 UIKit 0x0000000107995f09 UIApplicationMain + 171 24 PotSpot 0x0000000106b10a22 main + 114 25 libdyld.dylib 0x000000010ae2592d start + 1 26 ??? 0x0000000000000001 0x0 + 1 ) libc++abi.dylib: terminating with uncaught exception of type NSException

    type: issue 
    opened by bars395 14
  • Make it possible for Obj-C view controller to implement IndicatorInfoProvider protocol

    Make it possible for Obj-C view controller to implement IndicatorInfoProvider protocol

    In order to display a View Controller (VC) as a child of a Pager controller, the child VC needs to conform to the IndicatorInfoProvider protocol in order to let the pager know what to use as the VC's title in the pager.

    However, if a VC is written in Obj-C, it is currently impossible to have it as a child of a pager because the IndicatorInfoProvider protocol isn't made available to Obj-C. In order to make it available, the following minor changes have been made:

    • Added the @objc flag to the protocol
    • Structs don't exist in Obj-C, but the protocol function returns a struct. Refactored its return type to be a Class instead of a Struct.
    opened by oduwa 0
  • Code refresh + SPM support

    Code refresh + SPM support

    Updated source code to remove warnings and use clang instead of GCC. Upgraded support to iOS 11 and added support for SPM. Also, weak IBOutlets are not recommended by Apple since 2015, so I removed the keyword when not necessary. Moved FXPageControl to a dependency (PR to the main repo pending: https://github.com/nicklockwood/FXPageControl/pull/24) Fixed deprecated code concerning window orientation.

    I know there is already this good PR https://github.com/xmartlabs/XLPagerTabStrip/pull/846 aiming to bring support to SPM, but I think this lib needed a deeper refresh to remove some deprecations.

    opened by Climbatize 0
  • Swift Package Manager

    Swift Package Manager

    Any chance to add the required package.swift so that we can install the library through Swift Package Manager? This is the last package of my app for which I a, keeping Cocoa Pod

    opened by erwanmace 2
  • Support Swift Package Manager

    Support Swift Package Manager

    Motivation

    want to use Swift Package Manager

    Related issues

    • #771
    • #818

    Changed

    • Support Swift Package
      • Add Package.swift
      • ButtonBarViewCell load nib file divide from spm
    • Divide FXPageControl files and package
      • Add FXPageControl.podspec. and add dependency for XLPagerTabStrip.podspec

    TODO

    • [ ] add SPM installation for README
    opened by nk-5 1
Releases(9.0.0)
Owner
xmartlabs
xmartlabs
SwiftySideMenu is a lightweight and easy to use side menu controller to add left menu and center view controllers with scale animation based on Pop framework.

SwiftySideMenu SwiftySideMenu is a lightweight, fully customizable, and easy to use controller to add left menu and center view controllers with scale

Hossam Ghareeb 84 Feb 4, 2022
A fully customizable container view controller to display a set of ViewControllers in a horizontal scroll view. Written in Swift.

DTPagerController This is a control for iOS written in Swift. DTPagerController is simple to use and easy to customize. Screenshots Default segmented

Tung Vo 290 Nov 13, 2022
Custom transition between controllers. Settings controller for your iOS app.

SPLarkController About Transition between controllers to top. You can change animatable height after presentation controller. For presentation and dis

Ivan Vorobei 965 Dec 17, 2022
Drawer view controller that easy to use!

KWDrawerController Drawer view controller that is easy to use! Installation CocoaPods (iOS 8+ projects) KWDrawerController is available on CocoaPods.

Jungwon An 157 Jun 14, 2022
A paging view controller with a highly customizable menu ✨

Getting Started | Customization | Installation Features Parchment lets you page between view controllers while showing any type of generic indicator t

Martin Rechsteiner 3k Jan 8, 2023
Drawer view controller that easy to use!

KWDrawerController Drawer view controller that is easy to use! Installation CocoaPods (iOS 8+ projects) KWDrawerController is available on CocoaPods.

Jungwon An 157 Jun 14, 2022
A side menu controller written in Swift for iOS

Description SideMenuController is a custom container view controller written in Swift which will display the main content within a center panel and th

Teo 1.2k Dec 29, 2022
Menu controller with expandable item groups, custom position and appearance animation written with Swift. Similar to ActionSheet style of UIAlertController.

Easy to implement controller with expanding menu items. Design is very similar to iOS native ActionSheet presentation style of a UIAlertController. As

Anatoliy Voropay 22 Dec 27, 2022
A fun, easy-to-use tab bar navigation controller for iOS.

CircleBar Don’t you, sometimes, miss fun user interfaces? Truth is, we do. Sure, you can't use them in enterprise apps for obvious reasons, but if you

softhaus 786 Dec 25, 2022
iOS Slide Menu Controller. It is written in pure swift.

SlideMenuController Requirements iOS 9+ Installation SlideMenuController is available through CocoaPods. To install it, simply add the following line

Myung gi son 40 Jan 16, 2022
Panels is a framework to easily add sliding panels to your application

Panels is a framework to easily add sliding panels to your application. It takes care of the safe area in new devices and moving your panel when the k

Antonio Casero 1.5k Dec 14, 2022
You can easily add awesome animated context menu to your app.

Context-Menu.iOS You can easily add awesome animated context menu to your app. Made in Check this [project on dribbble] (https://dribbble.com/shots/17

Yalantis 1.8k Nov 17, 2022
Easily create dragabble menu with SwiftUI

SwiftUIDragMenu Easily create dragabble menu The gifs are not very good quality. Content is fluid. Sorry for this :( How to install this package Open

Mehmet ateş 1 Dec 5, 2022
slider view for choosing categories. add any UIView type as category item view. Fully customisable

CategorySliderView Horizontal or vertical slider view for choosing categories. Add any UIView type as category item view. Fully customisable Demo Inst

Cem Olcay 353 Nov 6, 2022
Interactive view transition to display menus with flowing and bouncing effects in Swift

FlowingMenu FlowingMenu provides an interactive transition manager to display menu with a flowing and bouncing effects. The Objective-C countepart is

Yannick Loriot 975 Dec 21, 2022
An easy to use and setup floating view for your app. 🎡

HHFloatingView An easy to use and setup floating view for your app. ?? Installation Manually - Add HHFloatingView/Source folder to your Project. And y

Hemang 95 Dec 15, 2022
iOS Slide Menu View based on Google+, iQON, Feedly, Ameba iOS app. It is written in pure swift.

SlideMenuControllerSwift iOS Slide View based on iQON, Feedly, Google+, Ameba iPhone app. Installation CocoaPods pod 'SlideMenuControllerSwift' Carth

Yuji Hato 3.3k Dec 29, 2022
Swipable tab and menu View and ViewController.

SwipeMenuViewController Overview SwipeMenuViewController provides SwipeMenuView and SwipeMenuViewController. This is very useful to build swipe-based

Yusuke Morishita 1.2k Dec 29, 2022
Mac menu bar tool to view the architecture of the running application

Silicon Info About Silicon Info is a tiny menu bar application allows the user to quickly view the architecture of the currently running application.

William Castelli (Billy) 260 Dec 29, 2022