Android PagerTabStrip for iOS.

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:

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.

Issues
  • 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
  • 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
  • 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
  • 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
  • Error:  Duplicate interface definition for class 'FXPageControl'. Getting this error after migration of the project to swift 5.5 and iOS 15.

    Error: Duplicate interface definition for class 'FXPageControl'. Getting this error after migration of the project to swift 5.5 and iOS 15.

    File Name: FXPageControl.h I am getting this error after the migration of the project to swift 5.5 and iOS 15.

    All properties in that file is getting an Error: Property has a previous declaration

    Reference: https://github.com/xmartlabs/XLPagerTabStrip/blob/903b7609b2b2dd1010efb9ee1c6a27edaa9df89b/Sources/FXPageControl.h#L56

    Screen Shot 2021-11-25 at 6 00 45 PM
    opened by Pravalika-Donthineni 1
  • ButtonBarPagerTabStripViewController is hidden with iOS 15

    ButtonBarPagerTabStripViewController is hidden with iOS 15

    Hi guys,

    After updating for iOS 15, my ButtonBarPagerTabStripViewController is hidden but drag's action still working fine. I've had a lot of changes in my swift code with iOS 15 and I noticed the XLPagerTabStrip haven't changed anything. Still working fine for everybody?

    opened by chrisbonilha 1
  • Ability to reload button bar view

    Ability to reload button bar view

    This PR has the following changes:

    • Ability to reload button bar view
    opened by kevalvadoliya 0
  • update library name for SwiftUI in Readme

    update library name for SwiftUI in Readme

    null

    opened by cecipirotto 0
  • XLPagerTabStrip is showing data in full screen . but I don't want to show in full screen .

    XLPagerTabStrip is showing data in full screen . but I don't want to show in full screen .

    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!
    Screenshot 2021-07-10 at 5 52 30 PM

    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 kalpitrathod01 2
  • PopToRootViewController and Push the ViewController Error

    PopToRootViewController and Push the ViewController Error

    When PoptoRootViewController and push to a certain ViewController, tab UI is broken. Is there any possible way to recover?

    opened by jubakong 1
  • Optimize for more efficient and predictable performance by changing Array to CountiguousArray

    Optimize for more efficient and predictable performance by changing Array to CountiguousArray

    I changed to use ContiguousArray< UIViewController > type to store UIViewControllers in a contiguous block of memory.

    When using a large number of UIViewControllers as tabs, I think that using ContiguousArray will yield more predictable performance compared to Array.

    The changed source file is:

    • Sources/PagerTabStripViewController.swift

    for Example:

    • BarExampleViewController.swift
    • ButtonBarExampleViewController.swift
    • InstagramExampleViewController.swift
    • NavButtonBarExampleViewController.swift
    • SegmentedExampleViewController.swift
    • SpotifyExampleViewController.swift
    • TwitterExampleViewController.swift
    • YoutubeExampleViewController.swift
    • YoutubeWithLabelExampleViewController.swift

    References

    • https://github.com/apple/swift/blob/main/docs/Arrays.rst
    • https://developer.apple.com/documentation/swift/contiguousarray
    • https://github.com/apple/swift/blob/main/docs/OptimizationTips.rst#advice-use-contiguousarray-with-reference-types-when-nsarray-bridging-is-unnecessary
    • http://jordansmith.io/on-performant-arrays-in-swift/
    • https://medium.com/@nitingeorge_39047/swift-array-vs-contiguousarray-a6153098a5
    opened by wanderingfairy 0
  • How to resizing the ViewControllers in containerView?

    How to resizing the ViewControllers in containerView?

    When the screen is rotated, how to resizing the ViewControllers in containerView(ScrollView)?

    Didn't work. self.reloadPagerTabStripView() self.containerView.contentSize

    opened by vkcldhkd 1
  • 把IndicatorInfoProvider 这个属性 currentIndex开放

    把IndicatorInfoProvider 这个属性 currentIndex开放

    有需求需要点进去直接跳到 某个tab的需求的

    opened by pengzhiqiang120 0
Releases(9.0.0)
Owner
xmartlabs
xmartlabs
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 Jan 10, 2022
A simple side menu for iOS written in Swift.

ENSwiftSideMenu A lightweight flyover side menu component for iOS with the UIDynamic's bouncing animation, UIGestures and UIBlurEffect. Allows you to

Evgeny Nazarov 1.8k Jan 3, 2022
iOS 7/8 style side menu with parallax effect.

RESideMenu iOS 7/8 style side menu with parallax effect inspired by Dribbble shots (first and second). Since version 4.0 you can add menu view control

Roman Efimov 7.2k Jan 7, 2022
RadialMenu is a custom control for providing a touch context menu (like iMessage recording in iOS 8) built with Swift & POP

RadialMenu Looking for help? For $150/hr I'll help with your RadialMenu problems including integrating it into your project. Email [email protected] t

Brad Jasper 296 Nov 16, 2021
The fastest zero-tap iOS menu.

⚡️ Quicklook The fastest zero-tap iOS menu CariocaMenu is a simple, elegant, fast navigation menu for your iOS apps. ?? Features Accessible from a sin

momo 789 Nov 19, 2021
Context menu similar to the one in the Pinterest iOS app

VLDContextSheet A clone of the Pinterest iOS app context menu. Example Usage VLDContextSheetItem *item1 = [[VLDContextSheetItem alloc] initWithTitle:

Vladimir Angelov 173 Jun 9, 2021
A menu based on Medium iOS app.

Notice: MediumMenu is no longer being maintained/updated. MediumMenu Medium 1.8.168 menu in Swift. That is still one of my favorite menus because that

Hiroki Nagasawa 322 Dec 19, 2021
This is a spring slide menu for iOS apps - 一个弹性侧滑菜单

LLSlideMenu This is a spring slide menu for iOS apps 一个弹性侧滑菜单 弹性动画原理借鉴该项目中阻尼函数实现 Preview 预览 Installation 安装 pod 1.pod 'LLSlideMenu', '~> 1.0.6'

Li Lei 588 Dec 7, 2021
Simple side/slide menu control for iOS, no code necessary! Lots of customization. Add it to your project in 5 minutes or less.

▤ SideMenu If you like SideMenu, give it a ★ at the top right of this page. SideMenu needs your help! If you're a skilled iOS developer and want to he

Jon Kent 5.3k Jan 1, 2022
🔻 Dropdown Menu for iOS with many customizable parameters to suit any needs

MKDropdownMenu Dropdown Menu for iOS with many customizable parameters to suit any needs. Inspired by UIPickerView. Installation CocoaPods MKDropdownM

Max Konovalov 525 Jan 12, 2022
ExpandingMenu is menu button for iOS written in Swift.

ExpandingMenu ExpandingMenu is written in Swift. Requirements iOS 8.0+ Xcode 10.0+ Swift 3.x+ Installation CocoaPods You can install CocoaPods with th

null 452 Dec 29, 2021
Grid and Circular Menu for iOS.

IGCMenu IGCMenu library gives easy way to create Grid and Circular menu in app. This is light weight and highly customisable menu.Support iOS 7 and ab

Sunil Sharma 137 Nov 29, 2021
An iOS drop down menu with pretty animation and easy to customize.

IGLDropDownMenu An iOS drop down menu with pretty animation. Screenshot How To Use Use CocoaPods: pod 'IGLDropDownMenu' Manual Install: Just drap the

Galvin Li 1.2k Jan 4, 2022
A Material Design drop down for iOS

A Material Design drop down for iOS written in Swift. Demo Do pod try DropDown in your console and run the project to try a demo. To install CocoaPods

AssistoLab 2.2k Jan 10, 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 Jan 7, 2022
An implementation of the sliding menu found in various iOS apps.

IIViewDeckController ViewDeck is a framework to manage side menus of all kinds. It supports left and right menus and manages the presentation of the s

ViewDeck 5.4k Jan 2, 2022
Hamburger Menu using Swift and iOS 8 API's

FrostedSidebar Hamburger Menu using Swift and iOS 8 API's Heavily influenced by @_ryannystrom's RNFrostedSidebar This implementation uses iOS 8's new

Evan Dekhayser 433 Nov 26, 2021
A menu which can ... BOOM! - iOS

VHBoomMenuButton 2.0.0 Comes Finally After the version 2.0.0 has been published on Android platform, I started developing the new version for BMB on i

Nightonke 574 Dec 17, 2021
Beautiful iOS side menu library with parallax effect. Written in Swift

AKSideMenu AKSideMenu is a double side menu library with parallax effect. Example Project See the contained examples to get a sample of how AKSideMenu

Diogo Autilio 253 Dec 29, 2021