A Material Design drop down for iOS

Related tags

UI DropDown
Overview

DropDown

Twitter: @kevinh6113 License: MIT Version Cocoapods Carthage compatible

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, run sudo gem install cocoapods in your console.

Installation ๐Ÿ“ฑ

DropDown supports Swift 5.0 since version 2.3.13. DropDown supports Swift 4.2 since version 2.3.4.

If you need Swift 4.0, use version 2.3.2:

  • Manually: use tag 2.3.2
  • CocoaPods: pod 'DropDown', '2.3.2'
  • Carthage: github "AssistoLab/DropDown" == 2.3.2

CocoaPods

Use CocoaPods.

  1. Add pod 'DropDown' to your Podfile.
  2. Install the pod(s) by running pod install.
  3. Add import DropDown in the .swift files where you want to use it

Carthage

Use Carthage.

  1. Create a file name Cartfile.
  2. Add the line github "AssistoLab/DropDown".
  3. Run carthage update.
  4. Drag the built DropDown.framework into your Xcode project.

Source files

A regular way to use DropDown in your project would be using Embedded Framework. There are two approaches, using source code and adding submodule.

Add source code:

  1. Download the latest code version.
  2. Unzip the download file, copy DropDown folder to your project folder

Add submodule

  1. In your favorite terminal, cd into your top-level project directory, and entering the following command:
$ git submodule add [email protected]:AssistoLab/DropDown.git

After you get the source code either by adding it directly or using submodule, then do the following steps:

  • Open DropDown folder, and drag DropDown.xcodeproj into the file navigator of your app project, under you app project.
  • In Xcode, navigate to the target configuration window by clicking the blue project icon, and selecting the application target under the "Targets" heading in the sidebar.
  • Open "Build Phases" panel in the tab bar at the top of the window, expend the "Target Dependencies" group and add DropDown.framework under DropDown icon in the popup window by clicking +. Similarly, you can also add DropDown.framework in "Embedded Binaries" under "General" tab.

Basic usage โœจ

let dropDown = DropDown()

// The view to which the drop down will appear on
dropDown.anchorView = view // UIView or UIBarButtonItem

// The list of items to display. Can be changed dynamically
dropDown.dataSource = ["Car", "Motorcycle", "Truck"]

Optional properties:

// Action triggered on selection
dropDown.selectionAction = { [unowned self] (index: Int, item: String) in
  print("Selected item: \(item) at index: \(index)")
}

// Will set a custom width instead of the anchor view width
dropDownLeft.width = 200

Display actions:

dropDown.show()
dropDown.hide()

Important โš ๏ธ

Don't forget to put:

DropDown.startListeningToKeyboard()

in your AppDelegate's didFinishLaunching method so that the drop down will handle its display with the keyboard displayed even the first time a drop down is showed.

Advanced usage ๐Ÿ› 

Direction

The drop down can be shown below or above the anchor view with:

dropDown.direction = .any

With .any the drop down will try to displa itself below the anchor view when possible, otherwise above if there is more place than below. You can restrict the possible directions by using .top or .bottom.

Offset

By default, the drop down will be shown onto to anchor view. It will hide it. If you need the drop down to be below your anchor view when the direction of the drop down is .bottom, you can precise an offset like this:

// Top of drop down will be below the anchorView
dropDown.bottomOffset = CGPoint(x: 0, y:(dropDown.anchorView?.plainView.bounds.height)!)

If you set the drop down direction to .any or .top you can also precise the offset when the drop down will shown above like this:

// When drop down is displayed with `Direction.top`, it will be above the anchorView
dropDown.topOffset = CGPoint(x: 0, y:-(dropDown.anchorView?.plainView.bounds.height)!)

Note the minus sign here that is use to offset to the top.

Cell configuration

Formatted text

By default, the cells in the drop down have the dataSource values as text. If you want a custom formatted text for the cells, you can set cellConfiguration like this:

dropDown.cellConfiguration = { [unowned self] (index, item) in
  return "- \(item) (option \(index))"
}

Custom cell

You can also create your own custom cell, from your .xib file. To have something like this for example:

You can check out a concrete example in the Demo inside this project (go to ViewController.swift, line 125).

For this you have to:

class MyCell: DropDownCell {
   @IBOutlet weak var logoImageView: UIImageView!
}
  • Create your custom xib (e.g. MyCell.xib) and design your cell view in it
  • Link the cell in your xib to your custom class
  • At least have a label in your xib to link to the optionLabel IBOutlet in code (optionLabel is a property of DropDownCell)

  • Then, you simply need to do this:
let dropDown = DropDown()

// The view to which the drop down will appear on
dropDown.anchorView = view // UIView or UIBarButtonItem

// The list of items to display. Can be changed dynamically
dropDown.dataSource = ["Car", "Motorcycle", "Truck"]

/*** IMPORTANT PART FOR CUSTOM CELLS ***/
dropDown.cellNib = UINib(nibName: "MyCell", bundle: nil)

dropDown.customCellConfiguration = { (index: Index, item: String, cell: DropDownCell) -> Void in
   guard let cell = cell as? MyCell else { return }

   // Setup your custom UI components
   cell.logoImageView.image = UIImage(named: "logo_\(index)")
}
/*** END - IMPORTANT PART FOR CUSTOM CELLS ***/
  • And you're good to go! ๐Ÿ™†

For a complete example, don't hesitate to check the demo app and code.

Events

dropDown.cancelAction = { [unowned self] in
  println("Drop down dismissed")
}

dropDown.willShowAction = { [unowned self] in
  println("Drop down will show")
}

Dismiss modes

dropDown.dismissMode = .onTap

You have 3 dismiss mode with the DismissMode enum:

  • onTap: A tap oustide the drop down is needed to dismiss it (Default)
  • automatic: No tap is needed to dismiss the drop down. As soon as the user interact with anything else than the drop down, the drop down is dismissed
  • manual: The drop down can only be dismissed manually (in code)

Others

You can manually (pre)select a row with:

dropDown.selectRow(at: 3)

The data source is reloaded automatically when changing the dataSource property. If needed, you can reload the data source manually by doing:

dropDown.reloadAllComponents()

You can get info about the selected item at any time with this:

dropDown.selectedItem // String?
dropDown.indexForSelectedRow // Int?

Customize UI ๐Ÿ–Œ

You can customize these properties of the drop down:

  • textFont: the font of the text for each cells of the drop down.
  • textColor: the color of the text for each cells of the drop down.
  • selectedTextColor: the color of the text for selected cells of the drop down.
  • backgroundColor: the background color of the drop down.
  • selectionBackgroundColor: the background color of the selected cell in the drop down.
  • cellHeight: the height of the drop down cells.
  • dimmedBackgroundColor: the color of the background (behind the drop down, covering the entire screen).
  • cornerRadius: the corner radius of the drop down (see info below if you encounter any issue)
  • setupMaskedCorners: the masked corners of the dropdown. Use this along with cornerRadius to set the corner radius only on certain corners.

You can change them through each instance of DropDown or via UIAppearance like this for example:

DropDown.appearance().textColor = UIColor.black
DropDown.appearance().selectedTextColor = UIColor.red
DropDown.appearance().textFont = UIFont.systemFont(ofSize: 15)
DropDown.appearance().backgroundColor = UIColor.white
DropDown.appearance().selectionBackgroundColor = UIColor.lightGray
DropDown.appearance().cellHeight = 60

Expert mode ๐Ÿค“

when calling the show method, it returns a tuple like this:

(canBeDisplayed: Bool, offscreenHeight: CGFloat?)
  • canBeDisplayed: Tells if there is enough height to display the drop down. If its value is false, the drop down is not showed.
  • offscreenHeight: If the drop down was not able to show all cells from the data source at once, offscreenHeight will contain the height needed to display all cells at once (without having to scroll through them). This can be used in a scroll view or table view to scroll enough before showing the drop down.

Issues

If you experience the compiler error "Ambiguous use of 'cornerRadius'" on line:

DropDown.appearance().cornerRadius = 10

Please use intead:

DropDown.appearance().setupCornerRadius(10) // available since v2.3.6

Requirements

  • Xcode 8+
  • Swift 3.0
  • iOS 8+
  • ARC

License

This project is under MIT license. For more information, see LICENSE file.

Credits

DropDown was inspired by the Material Design version of the Simple Menu.

DropDown was done to integrate in a project I work on:
Assisto

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

I work at
Pinch

You can find me on Twitter @kevinh6113.

Enjoy!

Comments
  • Swift 4.1 Issues

    Swift 4.1 Issues

    screen shot 2018-10-10 at 8 21 43 pm

    UIResponder issues in swift 4.1 when using 2.3.3 version. What is the pod version for Swift 4.1 . Swift 4.0 has 2.3.3 , swift 4.2 has 2.3.4 , Please see attachment

    waiting for answer 
    opened by shravanik18 19
  • DropDown frame is CGRectZero after calling show

    DropDown frame is CGRectZero after calling show

    Hi Kevin,

    Thanks again for supporting this open source library. It's very well written in my opinion and I've had an easy time using it. I do have DropDown working successfully from Objective-C in one table view controller that is static-grouped and the first child of a navigation controller in a tabbar controller. Yesterday I attempted to add it a second view controller which is loaded dynamically and presented modally, which are the only differences that I can see between the uses of it.

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
        SQFBFriendTableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:[SQFBFriendTableViewCell reuseIdentifier]];
        ... // some switching to detect the correct section, but the routing is correct
    
        self.multiplePhoneNumbersMenu = [[DropDown alloc] init];
        self.multiplePhoneNumbersMenu.textFont = [UIFont gothamBookAtSize:16];
        self.multiplePhoneNumbersMenu.textColor = [UIColor squadColorGrey103];
        self.multiplePhoneNumbersMenu.anchorView = cell;
    
         // this offset is from my implementation in the other tableview controller, toggling it has no effect on the issue
        CGFloat offset = self.multiplePhoneNumbersMenu.anchorView.plainView.bounds.size.height;
        self.multiplePhoneNumbersMenu.bottomOffset = CGPointMake(0, offset);
        self.multiplePhoneNumbersMenu.topOffset = CGPointMake(0, -offset);
    
    
        self.multiplePhoneNumbersMenu.dataSource = @[ @"Hello world" ];
        @weakify(self);
        self.multiplePhoneNumbersMenu.selectionAction = ^(NSInteger index, NSString * _Nonnull item) {
            @strongify(self);
            ... // does stuff
        };
    
        [self.multiplePhoneNumbersMenu show];
        // breakpoint here po's the frame as 0,0,0,0. the cell selection is highlighted, but the DropDown never appears
    }
    
    po self.multiplePhoneNumbersMenu
    <DropDown.DropDown: 0x158641170; frame = (0 0; 0 0); alpha = 0; animations = { opacity=<CABasicAnimation: 0x1581db490>; }; layer = <CALayer: 0x1585247d0>>
    

    I feel like I'm possibly missing something basic, but the implementation is mostly parallel to the one in my other class is the working. Any insight that you can offer would be appreciated. Thanks again!

    ~Mark

    opened by markedwardmurray 19
  • Crash error in Xcode8 swift3

    Crash error in Xcode8 swift3

    it crashes if you directly use a local variable "let dropDown = DropDown()", rather than assigning dropDown as a property. However it works in Xcode7.3.

    opened by skywalkerlw 17
  • update DropDown

    update DropDown

    hi i update DropDown from 1 to 1.5 but when running program app not working and error "DropDown.DropDown.anchorView.setter : weak DropDown.AnchorView?", referenced from:

    Undefined symbols for architecture x86_64:
      "DropDown.DropDown.anchorView.setter : weak DropDown.AnchorView?", referenced from:
          balen.AircraftSearch.viewDidLoad () -> () in AircraftSearch.o
      "protocol witness table for __ObjC.UIView : DropDown.AnchorView in DropDown", referenced from:
          balen.AircraftSearch.viewDidLoad () -> () in AircraftSearch.o
    ld: symbol(s) not found for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    
    help wanted 
    opened by J-Arji 16
  • Xib doesn't work in xcode 7.3 swift 2.2

    Xib doesn't work in xcode 7.3 swift 2.2

    notthing happen when i click button. The second time, when i click button dropDown.willShowAction work.

    let dropDown = DropDown()
        var labelArr = ["Car", "Motorcycle"]
        var imageArr = ["logout.png","camera.png"]
    
        @IBAction func xzx(sender: AnyObject) {
            dropDown.anchorView = viewSetting
            //     dropDown.dataSource = labelArr
            DropDown.appearance().backgroundColor = UIColor.blackColor()
            //dropDown.direction = .Bottom
           // dropDown.bottomOffset = CGPoint(x: 0, y: self.viewSetting.bounds.height)
            dropDown.cellNib = UINib(nibName: "DropTableViewCell", bundle: nil)
            dropDown.customCellConfiguration = { (index: Index, item: String, cell: DropDownCell) -> Void in
                guard let cell = cell as? DropTableViewCell else { return }
    
                // Setup your custom UI components
                cell.optionLabel.text = self.labelArr[index]
                cell.imgIcon.image = UIImage(named: self.imageArr[index])
            }
            dropDown.show()
            dropDown.willShowAction = { [unowned self] in
                print("Drop down will show")
            }
        }
    

    Help me pls :)

    opened by nghtho94 7
  • Updated code to support custom cells like proposed on #21

    Updated code to support custom cells like proposed on #21

    This PR includes changes as proposed on #21

    I had to also remove the static template for fitting calculations, as it can now depend on custom cells. Not sure if we should also call the custom cell block in that case to get the best fitting width possible.

    Note that the API is still the same and fully backwards compatible.

    opened by angelolloqui 7
  • Target deployment compatibility Issue

    Target deployment compatibility Issue

    Library description states that it should be compatible with projects for ios 7+, but im getting this error in an empty project when declaring the 'import DropDown'

    .../ViewController.swift:10:8: Module file's minimum deployment target is ios9.2 v9.2: ../Build/Products/Debug-iphoneos/DropDown.framework/Modules/DropDown.swiftmodule/arm.swiftmodule

    opened by desnyki 7
  • libswiftCore.dylib`swift_unknownUnownedLoadStrong:

    libswiftCore.dylib`swift_unknownUnownedLoadStrong:

        My App is crashing here line 485 in DropDown.swift . I cant figure out why . I am not using DropDown in viewcontroller it is crashing .
    
        dispatch_async(dispatch_get_main_queue()) { [unowned self] in
            self.tableView.flashScrollIndicators()
        }
        super.updateConstraints()
    
    opened by jassimkm 6
  • Could not load NIB in bundle: 'NSBundle with name 'DropDownCell'

    Could not load NIB in bundle: 'NSBundle with name 'DropDownCell'

    GAIUncaughtExceptionHandler(NSException *) (GAIUncaughtExceptionHandler.m:48): Uncaught exception: Could not load NIB in bundle: 'NSBundle </Users/tuliothome/Library/Developer/Xcode/DerivedData/iOSFanfics-enerleptowspyagorhkcphtttefg/Build/Products/Debug-iphonesimulator/DropDown.framework> (loaded)' with name 'DropDownCell'

    help wanted 
    opened by tulioht 6
  • Use dropdown in custom UIView

    Use dropdown in custom UIView

    Hi, thank you for an awesome package I want to implement Dropdown in my custom view. Something like this:

    import UIKit
    import DropDown
    
    class FiltersView: UIView {
        var view: UIView!
    
        @IBOutlet weak var seeViewDropDown: UIView!
        @IBOutlet weak var sortViewDropDown: UIView!
        @IBOutlet weak var filterViewDropDown: UIView!
    
        override init(frame:CGRect) {
    
            super.init(frame: frame)
            setup()
        }
    
        required init?(coder aDecoder: NSCoder) {
    
            super.init(coder: aDecoder)
            setup()
        }
    
        func someAction(sender:UITapGestureRecognizer){
    
            let dropDown = DropDown()
    
            // The view to which the drop down will appear on
            dropDown.anchorView = seeViewDropDown // UIView or UIBarButtonItem
    
            // The list of items to display. Can be changed dynamically
            dropDown.dataSource = ["Car", "Motorcycle", "Truck"]
    
            dropDown.show()
        }
    
        func setup() {
            view = loadViewFromNib()
            view.frame = bounds
            addSubview(view)
    
            let gestureSwift2AndHigher = UITapGestureRecognizer(target: self, action:  #selector (self.someAction(sender:)))
            seeViewDropDown.addGestureRecognizer(gestureSwift2AndHigher)
        }
    
        func loadViewFromNib() -> UIView {
            let bundle = Bundle(for: type(of: self))
            let nib = UINib(nibName: "FiltersView", bundle: bundle)
            view = nib.instantiate(withOwner: self, options: nil)[0] as! UIView
    
            return view
        }
    
    }
    

    The target is that clicking on seeViewDropDown view to show dropdown. But when I click seeViewDropDown. This error happen:

    screen shot 2016-09-29 at 18 15 52

    I think I do something wrong but don't know where. Could you help me ? Thank you.

    opened by leizard 5
  • Installing for Xcode 8-beta 6 yields 135 syntax errors in attempt to convert

    Installing for Xcode 8-beta 6 yields 135 syntax errors in attempt to convert

    When using pods to install for Xcode 8-beta 6, there's errors saying to convert to swift 2.3 or swift 3.0. After following apple's walkthrough to convert it, there's still around 135 syntax errors.

    Building the demo with Xcode 8 builds, but the simulator doesn't show up.

    screen shot 2016-09-20 at 12 05 21 pm

    Unsure if DropDown isn't intended to work with Xcode 8.

    opened by amandascchan 5
  • Added support for numberOfLines and its setting

    Added support for numberOfLines and its setting

    Changes have been made to automatically adjust the height of table rows depending on the text.

    Also added the ability to adjust the numberOfLines of the standard cell

    By default numberOfLines = 1

    opened by VestaCute 1
  • No functionality to add border

    No functionality to add border

    Hello,

    I was working on a project and I realised there is no functionality to make a border on drop down, and the tableView is file private so you cannot explicitly make changes in it.

    Please assign me this issue, so that I may add up the required functionality to make this pod more useful.

    Thanks!

    opened by alirafique014 0
  • Done button for multi-selection

    Done button for multi-selection

    Hello. I know multi-selection can be handled by multiSelectionAction handler. I want to add a "done" button so that the user can hide the dropDown after finishing selecting cells.

    The only way i found so far is by using dataSource. By adding extra "done" string in datasources and when the "done" cell index is selected, call dropDown.hide() But I am pretty sure there can be a better way for this.

    Thank you.

    opened by hongpower 0
  • Modified for custom DropDown Height

    Modified for custom DropDown Height

    In pod file DropDown.swift do following changes for custom height

    Step 1 : Add this below width property

    public var height: CGFloat? {
           didSet { setNeedsUpdateConstraints() }
     }
    

    Step 2 : In public override func updateConstraints() do this

    replace 
    `heightConstraint.constant = layout.visibleHeight `
    with following
    
    if let height = self.height {
        if layout.visibleHeight >= height {
             heightConstraint.constant = self.height ?? layout.visibleHeight
         } else {
             heightConstraint.constant = layout.visibleHeight
         }
    } else {
         heightConstraint.constant = layout.visibleHeight
    }
    

    Step 3 : In fileprivate func computeLayoutForTopDisplay(window: UIWindow) -> ComputeLayoutTuple do this

    replace

    if y < windowY {
        offscreenHeight = abs(y - windowY)
        y = windowY
    }
    

    with following

    if y < windowY {
     offscreenHeight = abs(y - windowY)
      if let height = self.height {
             y = anchorViewMaxY + topOffset.y - height
        } else {
              y = windowY
        }
     }
    

    Uses

    let dropDown = DropDown()
    dropDown.height = 50
    

    If height is not set, the dropdown height will be its content size and if content size is greater than screen/superview size then it will stop at view bounds and dropdown's scroll is activated. If you don't want that set height as suggested above. After setting height:-

    1. if your content size is less than your assigned height it will wrap to its content means dropdown will have height of its content size, you will see all dropdown option in list.
    2. If content size exceeds assigned height then dropdown will have its assigned height and scroll will be activated.
    opened by dev-Siddhesh 0
Releases(v2.3.12)
Owner
AssistoLab
AssistoLab
Material design components for iOS written in Swift

MaterialKit NOTE: This project is unmaintained. Material design components (inspired by Google Material Design) for iOS written in Swift Please feel f

Le Van Nghia 2.5k Jan 5, 2023
Blobmorphism is a brand new design language I've created to break free of the material overload in iOS, built in SwiftUI. Everything feels smooth and fluid.

Blobmorphism is a brand new design language I've created to break free of the material overload in iOS, built in SwiftUI. Everything feels smooth and fluid.

Ethan Lipnik 89 Nov 29, 2022
A Swift material design UI module which paints over the parent view when the switch is on.

:octocat: ?? RAMPaperSwitch is a Swift material design UI module which paints over the parent view when the switch is turned on. iOS library by @Ramotion

Ramotion 2.9k Dec 29, 2022
Material, a UI/UX framework for creating beautiful iOS applications

Material Welcome to Material, a UI/UX framework for creating beautiful applications. Material's animation system has been completely reworked to take

Cosmicmind 12k Jan 2, 2023
A drop-in universal library helps you to manage the navigation bar styles and makes transition animations smooth between different navigation bar styles

A drop-in universal library helps you to manage the navigation bar styles and makes transition animations smooth between different navigation bar styles while pushing or popping a view controller for all orientations. And you don't need to write any line of code for it, it all happens automatically.

Zhouqi Mo 3.3k Dec 21, 2022
A few drop-in SwiftUI components for easily importing and thumb-nailing files

FilesUI A few drop-in SwiftUI components for easily importing and thumb-nailing files Usage 1. Import Files To import files you can use the FileImport

Brianna Zamora 3 Oct 19, 2022
Newly is a drop in solution to add Twitter/Facebook/Linkedin style, new updates/tweets/posts available button

Newly is a drop in solution to add Twitter/Facebook/Linkedin style, new updates/tweets/posts available button. It can be used to notify user about new content availability and can other actions can be triggers using its delegate method.

Dhiraj Rajendra Jadhao 197 Sep 22, 2022
Easily add drop shadows, borders, and round corners to a UIView.

Easily add drop shadows, borders, rounded corners to a UIView. Installation CocoaPods Add the follwing to your Podfile: pod 'Shades' Usage Storyboard

Aaron Sutton 14 Jun 20, 2020
Anchorage - Single file UIView drag and drop system

anchorage Single file UIView drag and drop system anchors.mp4 License Copyright

โ— โ—โ—   โ— 3 Jan 28, 2022
Protocol oriented, type safe, scalable design system foundation swift framework for iOS.

Doric: Design System Foundation Design System foundation written in Swift. Protocol oriented, type safe, scalable framework for iOS. Features Requirem

Jay 93 Dec 6, 2022
Electronic Design in Swithft

Edith Electronic design in Swithft Serendipitously, the first woman to be professionally employed as an electrical engineer in the United States was a

CIRCT 37 Nov 3, 2021
UIStackView replica for iOS 7.x and iOS 8.x

TZStackView A wonderful layout component called the UIStackView was introduced with iOS 9. With this component it is really easy to layout components

Tom van Zummeren 1.2k Oct 10, 2022
Super awesome Swift minion for Core Data (iOS, macOS, tvOS)

โš ๏ธ Since this repository is going to be archived soon, I suggest migrating to NSPersistentContainer instead (available since iOS 10). For other conven

Marko Tadiฤ‡ 306 Sep 23, 2022
A custom stretchable header view for UIScrollView or any its subclasses with UIActivityIndicatorView and iPhone X safe area support for content reloading. Built for iOS 10 and later.

Arale A custom stretchable header view for UIScrollView or any its subclasses with UIActivityIndicatorView support for reloading your content. Built f

Putra Z. 43 Feb 4, 2022
BulletinBoard is an iOS library that generates and manages contextual cards displayed at the bottom of the screen

BulletinBoard is an iOS library that generates and manages contextual cards displayed at the bottom of the screen. It is especially well

Alexis (Aubry) Akers 5.3k Jan 2, 2023
๐Ÿ’พ A collection of classic-style UI components for iOS

A collection of classic-style UI components for UIKit, influenced by Windows 95 Introduction This is a little exploration into applying '90s-era desig

Blake Tsuzaki 2.2k Dec 22, 2022
A simple, customizable view for efficiently collecting country information in iOS apps.

CountryPickerView CountryPickerView is a simple, customizable view for selecting countries in iOS apps. You can clone/download the repository and run

Kizito Nwose 459 Dec 27, 2022
A library to recreate the iOS Apple Music now playing transition

DeckTransition DeckTransition is an attempt to recreate the card-like transition found in the iOS 10 Apple Music and iMessage apps. Hereสผs a GIF showi

Harshil Shah 2.2k Dec 15, 2022
A message bar for iOS written in Swift.

Dodo, a message bar for iOS / Swift This is a UI widget for showing text messages in iOS apps. It is useful for showing short messages to the user, so

Evgenii Neumerzhitckii 874 Dec 13, 2022