Simple and Elegant Drop down menu for iOS 🔥💥

Overview

SwiftyMenu

Cocoapod Swift Package Manager Version MIT License
Facebook: @KarimEbrahemAbdelaziz Twitter: @k_ebrahem_

SwiftyMenu is simple yet powerfull drop down menu component for iOS. It allow you to have drop down menu that doesn't appear over your views, which give you awesome user experience.

Screenshots

Requirements

  • Xcode 10.2+
  • Swift 5+
  • iOS 10+

Installation

CocoaPods

CocoaPods is a dependency manager for Cocoa projects. For usage and installation instructions, visit their website. To integrate SwiftyMenu into your Xcode project using CocoaPods, specify it in your Podfile:

pod 'SwiftyMenu', '~> 1.0.0'

Swift Package Manager

  1. Automatically in Xcode:
  • Click File > Swift Packages > Add Package Dependency...
  • Use the package URL https://github.com/KarimEbrahemAbdelaziz/SwiftyMenu to add TimelaneCombine to your project.
  1. Manually in your Package.swift file add:
.package(url: "https://github.com/KarimEbrahemAbdelaziz/SwiftyMenu", from: "1.0.0")

Usage

SwiftyMenu supports initialization from Storyboard and Code.

Initialization

Storyboard

Setup your view controller:

// Connect view in storyboard with you outlet
@IBOutlet private weak var dropDownMenu: SwiftyMenu!

Then connect IBOutlet to Storyboard, and connect the Height Constraints of the menu as shown below.

Code

  1. Init SwiftyMenu
/// Init SwiftyMenu from Code
let dropDownCode = SwiftyMenu(frame: CGRect(x: 0, y: 0, width: 0, height: 40))
  1. Add SwiftyMenu as Subview
/// Add it as subview
view.addSubview(dropDownCode)
  1. Setup Constraints
/// Add constraints to SwiftyMenu
/// You must take care of `hegiht` constraint, please.
dropDownCode.translatesAutoresizingMaskIntoConstraints = false

let horizontalConstraint = NSLayoutConstraint(item: dropDownCode, attribute: NSLayoutConstraint.Attribute.centerX, relatedBy: NSLayoutConstraint.Relation.equal, toItem: view, attribute: NSLayoutConstraint.Attribute.centerX, multiplier: 1, constant: 0)

let topConstraint = NSLayoutConstraint(item: dropDownCode, attribute: NSLayoutConstraint.Attribute.top, relatedBy: NSLayoutConstraint.Relation.equal, toItem: otherView, attribute: NSLayoutConstraint.Attribute.top, multiplier: 1, constant: 64)

let widthConstraint = NSLayoutConstraint(item: dropDownCode, attribute: NSLayoutConstraint.Attribute.width, relatedBy: NSLayoutConstraint.Relation.equal, toItem: nil, attribute: NSLayoutConstraint.Attribute.notAnAttribute, multiplier: 1, constant: 255)

dropDownCode.heightConstraint = NSLayoutConstraint(item: dropDownCode, attribute: NSLayoutConstraint.Attribute.height, relatedBy: NSLayoutConstraint.Relation.equal, toItem: nil, attribute: NSLayoutConstraint.Attribute.notAnAttribute, multiplier: 1, constant: 40)

NSLayoutConstraint.activate(
    [
        horizontalConstraint,
        topConstraint,
        widthConstraint,
        dropDownCode.heightConstraint
    ]
)

Configure DataSource

To configure SwiftyMenu DataSource, you'll need to prepare your Model to be able to presented and retrived from the menu. Then, create and assign the DataSource to SwiftyMenu.

Setup Models

We are supporting Generic Data Source, all you have to do is conforming to our Generic Protocol on which type you want to add to the menu.

  • Example of String
extension String: SwiftyMenuDisplayable {
    public var displayableValue: String {
        return self
    }
    
    public var retrivableValue: Any {
        return self
    }
}
  • Example of custom Struct
struct MealSize {
    let id: Int
    let name: String
}

extension MealSize: SwiftyMenuDisplayable {
    public var displayableValue: String {
        return self.name
    }

    public var retrievableValue: Any {
        return self.id
    }
}

Assign DataSource

  1. Create an Array of your models
/// Define menu data source
/// The data source type must conform to `SwiftyMenuDisplayable`
private let dropDownOptionsDataSource = [
    MealSize(id: 1, name: "Small"),
    MealSize(id: 2, name: "Medium"),
    MealSize(id: 3, name: "Large"),
    MealSize(id: 4, name: "Combo Large")
]
  1. Assign it to SwiftyMenu DataSource property
dropDownCode.items = dropDownOptionsDataSource

Capture Selection

SwiftyMenu supports 2 ways to capture the selected items, Delegate and Closures. You can use one or both of them at the same time.

Using Delegate

  1. Conform to SwiftyMenu Delegate protocol
extension ViewController: SwiftyMenuDelegate {
    // Get selected option from SwiftyMenu
    func swiftyMenu(_ swiftyMenu: SwiftyMenu, didSelectItem item: SwiftyMenuDisplayable, atIndex index: Int) {
        print("Selected item: \(item), at index: \(index)")
    }
    
    // SwiftyMenu drop down menu will expand
    func swiftyMenu(willExpand swiftyMenu: SwiftyMenu) {
        print("SwiftyMenu willExpand.")
    }

    // SwiftyMenu drop down menu did expand
    func swiftyMenu(didExpand swiftyMenu: SwiftyMenu) {
        print("SwiftyMenu didExpand.")
    }

    // SwiftyMenu drop down menu will collapse
    func swiftyMenu(willCollapse swiftyMenu: SwiftyMenu) {
        print("SwiftyMenu willCollapse.")
    }

    // SwiftyMenu drop down menu did collapse
    func swiftyMenu(didCollapse swiftyMenu: SwiftyMenu) {
        print("SwiftyMenu didCollapse.")
    }
}
  1. Assign SwiftyMenu delegate
dropDownCode.delegate = self

Using Closures

You can use callbacks to know what happen:

/// SwiftyMenu also supports `CallBacks`
dropDownCode.didSelectItem = { menu, item, index in
    print("Selected \(item) at index: \(index)")
}

dropDownCode.willExpand = {
    print("SwiftyMenu Will Expand!")
}

dropDownCode.didExpand = {
    print("SwiftyMenu Expanded!")
}

dropDownCode.willCollapse = {
    print("SwiftyMenu Will Collapse!")
}

dropDownCode.didCollapse = {
    print("SwiftyMenu Collapsed!")
}

UI Customization

Having an amazing drop down menu is essential. So, there're a lot of UI customization for SwiftyMenu (More to be added soon).

To configure UI customization for SwiftyMenu:

  1. Create SwiftyMenuAttributes property
private var codeMenuAttributes = SwiftyMenuAttributes()
  1. Assign it to SwiftyMenu
/// Configure SwiftyMenu with the attributes
dropDownCode.configure(with: codeMenuAttributes)

Also before assigning it to SwiftyMenu you could customize the menu look using following attributes.

Placeholder

attributes.placeHolderStyle = .value(text: "Please Select Size", textColor: .lightGray)

Text Style

attributes.textStyle = .value(color: .gray, separator: " & ", font: .systemFont(ofSize: 12))

Scroll

attributes.scroll = .disabled

Selection Behavior

attributes.multiSelect = .disabled
attributes.hideOptionsWhenSelect = .enabled

Row Style

attributes.rowStyle = .value(height: 40, backgroundColor: .white, selectedColor: .white)

Frame Style

/// Rounded Corners 
attributes.roundCorners = .all(radius: 8)

/// Menu Maximum Height
attributes.height = .value(height: 300)

/// Menu Border
attributes.border = .value(color: .gray, width: 0.5)

Arrow Style

/// `SwiftyMenu` have default arrow
attributes.arrowStyle = .value(isEnabled: true)

Separator Style

attributes.separatorStyle = .value(color: .black, isBlured: false, style: .singleLine)

Header Style

attributes.headerStyle = .value(backgroundColor: .white, height: 40)

Accessory

attributes.accessory = .disabled

Animation

attributes.expandingAnimation = .linear
attributes.expandingTiming = .value(duration: 0.5, delay: 0)

attributes.collapsingAnimation = .linear
attributes.collapsingTiming = .value(duration: 0.5, delay: 0)

Example Project

You could check the full Example project Here.

TODO

  • Automate release new version to Cocoapods from Github Actions.
  • Add CHANGELOG file for the project.
  • Allow custom header and options cells.
  • Allow different interactions to dismiss SwiftyMenu.
  • Allow to customize the default seperator.
  • Support Generic DataSource.
  • Support multi selection in SwiftMenu 🔥 .
  • Support multi SwiftyMenu in one screen.
  • Support stack view and add example.
  • Support call backs and delegation.
  • Support different types of Animations.
  • Add different customization to colors for default cells.

And much more ideas to make it solid drop down menu for iOS projects 😎 💪🏻

Android

Author

Karim Ebrahem, [email protected]

License

SwiftyMenu is available under the MIT license. See the LICENSE file for more info.

Credits

You can find me on Twitter @k_ebrahem_.

It will be updated when necessary and fixes will be done as soon as discovered to keep it up to date.

Enjoy!

Comments
  • Option to Expand/Collapse menu from code

    Option to Expand/Collapse menu from code

    Hi, is there by any chance a way to manually trigger expanding/collapsing the menu? As I see from the code, the methods to achieve this are set to private... or is there a specific interface for this? Thanks

    opened by masterpaulo 16
  • Single Selection Menu Changing Choice

    Single Selection Menu Changing Choice

    Using the drop down menu and having the menu toggle so that when you make one selection, the menu closes works. The issue is if I then want to change my selection, I will tap the menu, and I see the arrow flip, but the menu does not drop down. Tap it once more and it will drop down again to allow you to make that selection again.

    It is a simple thing that does not inhibit the use of the menu at all, still something that does slow the user down. Otherwise, love this! Note:

    • Only happens in single selection menu
    • Only happens when a selection of an item is made
    • Double tap to bring the options back up again
    • You do see the arrow flip for each tap

    • No big, just a little style issue

    https://user-images.githubusercontent.com/19269477/108019967-2e8ff880-6fd0-11eb-801c-d59b757b833f.mov

    bug 
    opened by KitsuneNoctus 4
  • How to disable inputAccessoryView and how to inset arrow image ?

    How to disable inputAccessoryView and how to inset arrow image ?

    Hi I want to achieve below.

    1. Disable input accessory view.
    2. adding inset/padding/margin for arrow image.

    Please suggest me what can I use for this. I already tried couple of things with provided properties.

    enhancement 
    opened by Bhargavi-Enrich 4
  • Error with latest version when installing with SPM

    Error with latest version when installing with SPM

    Hi! I tried installing with SPM but I got lot of errors, installation with Cocoapods went fine and smooth instead. Cannot find type 'UIColor' in scope Cannot find type 'UIFont' in scope and such

    Schermata 2021-10-05 alle 10 36 11 bug 
    opened by palla89 2
  • Updated the SingleSelect menu for when hideOptionsWhenSelect is True

    Updated the SingleSelect menu for when hideOptionsWhenSelect is True

    PR - pt. 1

    There was an issue in which when isMultiSelect is set to false and hideOptionsWhenSelect is set to true that the menu would drop down for a selection, would allow for selection. When an item is selected, the menu will then collapse as it should.

    The issue came when I would come to expand the menu again that it would not drop down on the initial touch interaction, though the arrow indicating the current state of the menu would animate. Upon pressing it a second time the menu would expand. This bug occurred every time after a selection was made. Nothing would be broken, but it was a simple style issue that would cause users to slow down and such.

    The issue seemed to be that when a selection was made, the toggle method that switched the SwiftyMenuState would not trigger for some reason.

    The change that needed to be made was at lines 299, 309, 315, and 325. I simply changed it from calling the method collapseSwiftyMenu() to the method handleMenuState() in order to trigger the toggle.

    Fixes # 1

    Type of change

    • [x ] Bug fix (non-breaking change which fixes an issue)

    How Has This Been Tested?

    This was tested via a simple user testing method in which I would update the pods on the example project and run the project to test if the menu was still having the same issues after the changes were made.

    Test Configuration:

    • Hardware: MAC Book Pro
    • Toolchain: Xcode Simulator
    • SDK: Xcode

    Checklist:

    • [x ] My code follows the style guidelines of this project (I hope)
    • [ x] I have performed a self-review of my own code
    • [ x] I have commented my code, particularly in hard-to-understand areas
    • [ ] I have made corresponding changes to the documentation
    • [ x] My changes generate no new warnings
    • [ ] I have added tests that prove my fix is effective or that my feature works
    • [ ] New and existing unit tests pass locally with my changes
    • [ ] Any dependent changes have been merged and published in downstream modules

    PR - pt. 2

    Created a changes based on the list of TODO's on the main project page. Attempted to create a change where the menu would close when you would tap on the parent view, but could not get touches out of the menu to be recognized. Then went to attempt at making a user friendly method for separator styling. It can edit color, visibility, and blur effects so far.

    Type of change

    • [ x] New feature (non-breaking change which adds functionality)

    How Has This Been Tested?

    Using the simulator and adding and example of the method to the example project. Tested over and over again to try and get different effects. What is pushed now is what I could achieve in the time frame.

    Test Configuration:

    • Firmware version:
    • Hardware: MAC Book Pro
    • Toolchain: Simulator
    • SDK: Xcode

    Checklist:

    • [ X] My code follows the style guidelines of this project
    • [ X] I have performed a self-review of my own code
    • [ ] I have commented my code, particularly in hard-to-understand areas
    • [ ] I have made corresponding changes to the documentation
    • [X ] My changes generate no new warnings
    • [ ] I have added tests that prove my fix is effective or that my feature works
    • [ ] New and existing unit tests pass locally with my changes
    • [ ] Any dependent changes have been merged and published in downstream modules

    PR Issue

    The issue with the build is something I attempted to remedy by installing more versions of the os, but this did not seem to remedy the issue at hand.

    bug enhancement 
    opened by KitsuneNoctus 2
  • setting the current selectedIndex programmatically doesn't show the selecteditem

    setting the current selectedIndex programmatically doesn't show the selecteditem

    Hi, I'm facing an issue when setting the current selectedIndex programmatically doesn't show the selected item. when trying to debug I noticed that the button does'nt include any uilabel.

    opened by aviya-smila 2
  • SnapKit dependency is outdated

    SnapKit dependency is outdated

    Please update the SnapKit dependency to use a more up to date version of SnapKit. The currently used version is 4.2.0, released in October 2018. The latest version is 5.0.1, released in August 2019. This version also migrates to using Swift 5.

    https://github.com/SnapKit/SnapKit/tags

    opened by mitchwd 2
  • Error when initializing from code

    Error when initializing from code

    Hello,

    I have implemented your library using CocoaPods using Xcode 11.4. I am testing on the simulator with iOS 13.4.

    I am trying to use your library from code without storyboard at all but it doesn't seem to be working. I am not sure if it is because I am trying to add the menu to a table view cell, but no matter what I do I get a white empty box on the UI side of things and when I am debugging I always see this:

    expression produced error: error: /var/folders/1w/ltx7q76130s12wkrq5_tjdxm0000gp/T/expr56-31d3d2..swift:1:88: error: 'SwiftyMenuDisplayable' is not a member type of 'SwiftyMenu'
    Swift._DebuggerSupport.stringForPrintObject(Swift.UnsafePointer<Swift.Array<SwiftyMenu.SwiftyMenuDisplayable>>(bitPattern: 0x1090356e0)!.pointee)
                                                                                ~~~~~~~~~~ ^
    
    SwiftyMenu.SwiftyMenu:1:20: note: 'SwiftyMenu' declared here
    final public class SwiftyMenu : UIView {
    

    Clicking any menu crashes the application:

    Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value: file Pods/SwiftyMenu/SwiftyMenu/Classes/SwiftyMenu.swift, line 470
    2020-03-30 11:01:34.684213-0400 ARC Bookshelf[22331:3996509] Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value: file Pods/SwiftyMenu/SwiftyMenu/Classes/SwiftyMenu.swift, line 470
    

    Some of my code on how I am implementing the menu:

    class DropdownMenuCellView: MenuCellView, SwiftyMenuDelegate {
        
        var dropdownMenu: SwiftyMenu?
        var icon: UIImageView?
    
        private let alphaNormal: CGFloat = 0.0
        private let alphaSelected: CGFloat = 1.0
        
        override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
            super.init(style: style, reuseIdentifier: reuseIdentifier)
            
            dropdownMenu = SwiftyMenu(frame: CGRect(x: 10.0, y: 0.0, width: self.frame.width - 10.0, height: 30.0))
            dropdownMenu?.delegate = self
            
            dropdownMenu?.isMultiSelect = false
            //dropdownMenu?.scrollingEnabled = false
            
            dropdownMenu?.rowBackgroundColor = .menuBackground
            
            dropdownMenu?.cornerRadius = 0.0
            
            self.addSubview(dropdownMenu!)
        }
        
        required init?(coder aDecoder: NSCoder) {
            super.init(coder: aDecoder)
        }
        
        func swiftyMenu(_ swiftyMenu: SwiftyMenu, didSelectItem item: SwiftyMenuDisplayable, atIndex index: Int) {
            // TODO
        }
        
    }
    

    At quick glance I believe this is related to it being implemented through CocoaPods, since it seems to act as if the module is missing. I am using !use_frameworks in my Podfile. I am not sure if your library does not work in that scenario.

    bug enhancement 
    opened by gintechsystems 2
  • Swifty Menu not working for transparent row background color

    Swifty Menu not working for transparent row background color

    Hi. I'm going to implement transparent swiftymenu for row items. But currently only keep white color.

    Could you please help me how can I solve this problem?

    Thanks. Regards.

    opened by iris112 2
  • Cannot assign value of type '[String]' to type '[SwiftMenuDisplayable]'

    Cannot assign value of type '[String]' to type '[SwiftMenuDisplayable]'

    let data = ["option1", "option2"]
    let menu = SwiftyMenu()
    mune.options = data
    

    When I write like this, Xcode give me an error: Cannot assign value of type '[String]' to type '[SwiftMenuDisplayable]'

    invalid 
    opened by RimsonLiu 2
  • .didSelectItem not being called

    .didSelectItem not being called

    Hello Karim, First, I would like to thank you for SwiftyMenu, great work !! I have an issue that I can not understand!! I followed your steps to create a simple dropdown list. All SwiftyMenuDelegate methods been called except .didSelectItem Here's my code

    @IBOutlet weak var dopdownMenu: SwiftyMenu! //typo in the name :)
    
     override func viewDidLoad() {
            super.viewDidLoad()
            
            
            
            let arr = ["one", "two", "three"]
            dopdownMenu.items = arr
            /// SwiftyMenu also supports `CallBacks`
            dopdownMenu.didSelectItem = { _, item, index in
                print("Selected \(item) at index: \(index)")
                print(item.displayableValue)
            }
    
            dopdownMenu.willExpand = {
                print("SwiftyMenu Will Expand!")
            }
    
            dopdownMenu.didExpand = {
                print("SwiftyMenu Expanded!")
            }
    
            dopdownMenu.willCollapse = {
                print("SwiftyMenu Will Collapse!")
                
            }
    
            dopdownMenu.didCollapse = {
                print("SwiftyMenu Collapsed!")
            }
        }
    
    //extension
    //
    //  String+Extensions.swift
    //  
    //
    //  Created by Sam on 2022-03-10.
    //
    
    import Foundation
    import SwiftyMenu
    
    extension String: SwiftyMenuDisplayable {
        public var displayableValue: String {
            return self
        }
    
        public var retrievableValue: Any {
            return self
        }
    }
    
    

    As you can see, I did create a string extension and set the height constraint on the storyboard. What I'm missing here? I downloaded your sample project and it works just fine. I tried to debug and compare the difference between my simple app and yours but no luck!

    Thanks in advance! Regards, Sam

    opened by SamH2022 1
  • Wasn't able to setup the view after it first initialized.  So I made a fix myself.

    Wasn't able to setup the view after it first initialized. So I made a fix myself.

    For my application, I have the menu show a border for certain cases or hide it. But the problem I ran into was that it would never re-setup the view. Just by making the setupView() function public, I was able to call it from my application and had no problems. Not sure if it would be better to change this or make a new function to do the same thing but wanted to point it out.

    opened by nerdroom 0
  • somting like z-index

    somting like z-index

    i was adding the menu and the height is 200 it expand over a save button if i try to select the item that covers the save button the save button is clicked and not the MenuItem

    Thanks

    bug 
    opened by arabdev 1
  • Default Value

    Default Value

    Hi there, Thank you for your efforts!

    How can we set Default Value?

    We have an array ([Model(name:"CC"), Model(name:"FC"), Model(name:"FF")]) so we want to display "CC" on landing controller. We are able to set the index ("selectedIndex") but how can we set the text of that index?

    Here is my code:

    private func setupAssetOwnerDDMenu() {

        dropdown.delegate = self
        dropdown.configure(with: dropdownMenuAttributes)
    
        dropdown.items = dropdownOptionsDataSource
        
        dropdown.selectedIndex = 0
        **dropdown.selectButton  (select button is a private property so I can not set title)**
    }
    
    opened by idrenn 1
  • Code initialization SwiftyMenu problem

    Code initialization SwiftyMenu problem

    There seems to be a problem when I initialize SwiftyMenu with code.

        lazy var menuV: SwiftyMenu = {
            let view = SwiftyMenu(frame: .zero)
            let attributes = SwiftyMenuAttributes()
            view.configure(with: attributes)
            view.items = ["Times Cost","Recents","Save Money"]
            return view
        }()
    
            self.view.addSubview(menuV)
            menuV.snp.makeConstraints { make in
                make.right.equalTo(self.view.snp.right).offset(XBScale(-15))
                make.top.bottom.equalTo(titleLab)
                make.width.equalTo(XBScale(150))
            }
    

    When I click on the menu an error occurs.

    SwiftyMenu/SwiftyMenu.swift:410: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value

    /// Called to Expand `SwiftyMenu`.
        private func expandSwiftyMenu() {
            delegate?.swiftyMenu(willExpand: self)
            self.willExpand()
    /// This is line 410
            heightConstraint.constant = attributes.height.listHeightValue == 0 || !attributes.scroll.isEnabled || (CGFloat(Double(attributes.rowStyle.rowStyleValues.height) * Double(items.count + 1)) < CGFloat(attributes.height.listHeightValue)) ? CGFloat(Double(attributes.rowStyle.rowStyleValues.height) * Double(items.count + 1)) : CGFloat(attributes.height.listHeightValue)
    
            switch attributes.expandingAnimation {
            case .linear:
                UIView.animate(withDuration: attributes.expandingTiming.animationTimingValues.duration,
                               delay: attributes.expandingTiming.animationTimingValues.delay,
                               animations: animationBlock,
                               completion: expandingAnimationCompletionBlock)
                
            case .spring(level: let powerLevel):
                let damping = CGFloat(0.5 / powerLevel.rawValue)
                let initialVelocity = CGFloat(0.5 * powerLevel.rawValue)
                
                UIView.animate(withDuration: attributes.expandingTiming.animationTimingValues.duration,
                               delay: attributes.expandingTiming.animationTimingValues.delay,
                               usingSpringWithDamping: damping,
                               initialSpringVelocity: initialVelocity,
                               options: [],
                               animations: animationBlock,
                               completion: expandingAnimationCompletionBlock)
            }
        }
    
    bug enhancement 
    opened by yanxiaobing 4
Releases(1.0.1)
Owner
Karim Ebrahem
Senior iOS Software Engineer and Swift Enthusiast 🚀🛠
Karim Ebrahem
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 Dec 27, 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.3k Jan 1, 2023
⭕️ CircleMenu is a simple, elegant UI menu with a circular layout and material design animations. Swift UI library made by @Ramotion

CIRCLE MENU Simple, elegant UI menu with a circular layout and material design animations We specialize in the designing and coding of custom UI for M

Ramotion 3.4k Dec 29, 2022
Slide-Menu - A Simple Slide Menu With Swift

Slide Menu!! Весь интерфейс создан через код

Kirill 0 Jan 8, 2022
The elegant yet functional dropdown menu, written in Swift, appears underneath the navigation bar to display a list of defined items when a user clicks on the navigation title.

Introduction The elegant yet functional dropdown menu, written in Swift, appears underneath the navigation bar to display a list of defined items when

Tho Pham 2.7k Dec 28, 2022
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 Slide Menu, written in Swift, inspired by Slide Menu Material Design

Swift-Slide-Menu (Material Design Inspired) A Slide Menu, written in Swift 2, inspired by Navigation Drawer on Material Design (inspired by Google Mat

Boisney Philippe 90 Oct 17, 2020
EasyMenu - SwiftUI Menu but not only button (similar to the native Menu)

EasyMenu SwiftUI Menu but not only button (similar to the native Menu) You can c

null 10 Oct 7, 2022
Swift-sidebar-menu-example - Create amazing sidebar menu with animation using swift

 SWIFT SIDEBAR MENU EXAMPLE In this project I create a awesome side bar menu fo

Paolo Prodossimo Lopes 4 Jul 25, 2022
Hamburger Menu Button - A hamburger menu button with full customization

Hamburger Menu Button A hamburger menu button with full customization. Inspired by VinhLe's idea on the Dribble How to use it You can config the looks

Toan Nguyen 114 Jun 12, 2022
Control your display's brightness from the macOS menu bar. Simple and easy to use.

MonitorControl Lite Control your display's brightness from the macOS menu bar. Simple and easy to use. About MonitorControl Lite is a simplified versi

null 62 Dec 11, 2022
📷A simple and convenient way to manage your webcam's picture settings, right from your menu bar

Viewfinder A simple and convenient way to manage your webcam's picture settings, right from your menu bar. About • Download • Building from Source • C

Lukas Romsicki 31 Dec 25, 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 Dec 21, 2022
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.4k Dec 29, 2022
a simple macOS menu bar application that shows you the lyrics of current playing spotify track.

lyricsify a simple macOS menu bar application that shows you the lyrics of current playing spotify track.

Krisna Pranav 4 Sep 16, 2021
A simple dropdown menu component for iPhone

AZDropdownMenu AZDropdownMenu is a simple dropdown menu component that supports Swift. Screenshots Code used in the screencast are included in the bun

Wu 194 Nov 14, 2022
A simple circle style menu.

Support CocoaPods. New at 2019.02.25 Use @property (nonatomic, assign) BOOL isOpened; can open or close RoundMenu. use -(void)setButtonEnable:(BOOL)en

zsy78191 383 Dec 21, 2022
A simple customizable side menu written in SwiftUI.

NSideMenu Description A simple customizable side menu written in SwiftUI. Give a Star! ⭐ Feel free to request an issue on github if you find bugs or r

null 5 Oct 10, 2022
Simple side option menu with clean code princibles

SwiftUISideMenu Simple side option menu with clean code princibles.

Mehmet Karanlık 12 May 23, 2022