โก๏ธ Quicklook
The fastest zero-tap iOS menu
CariocaMenu is a simple, elegant, fast navigation menu for your iOS apps.
๐ Features
- Accessible from a single swipe of the left/right screen edge
- Accessible with a tap on the indicator
- Customisable menu indicator
- Menu Item supports image & emoji/text
- Boomerang mode
- Supports rotation (Full AutoLayout)
- Supports iPhone X & the Notch !
- Complete Technical Documentation
๐ Requirements
- AutoLayout
- iOS 9.0+
- Swift 4.0
๐ข Communication
- If you need help, use Stack Overflow. (Tag 'CariocaMenu')
- If you'd like to ask a general question, use Stack Overflow.
- If you found a bug, open an issue.
- If you have a feature request, open an issue.
- If you want to contribute, submit a pull request.
- If you use the control, contact me to mention your app on this page.
๐ฒ Installation
CocoaPods
CariocaMenu is now available on CocoaPods. Simply add the following to your project Podfile, and you'll be good to go.
use_frameworks!
pod 'CariocaMenu', '~> 2.0.1'
Carthage
Carthage is a decentralised dependency manager that builds your dependencies and provides you with binary frameworks.
You can install Carthage with Homebrew using the following command:
$ brew update
$ brew install carthage
To integrate CariocaMenu into your Xcode project using Carthage, specify it in your Cartfile
:
github "arn00s/cariocamenu"
Run carthage
to build the framework and drag the built CariocaMenu.framework
into your Xcode project.
Manually
If you prefer, you can integrate CariocaMenu into your project manually.
Just Drag&Drop all the files under Sources/
into your project.
๐ป Usage
Preparing your menu controller
To create and display your menu, you'll need to create a custom CariocaController (UITableViewController & CariocaDataSource)
This will define your menu settings & appearance. Check DemoMenuContentController.swift for code sample.
Creating your menu
For the complete code, check MainViewController.swift.
if let controller = self.storyboard?.instantiateViewController(withIdentifier: "DemoMenu")
as? CariocaController {
addChildViewController(controller)
carioca = CariocaMenu(controller: controller,
hostView: self.view,
edges: [.right, .left],
delegate: self,
indicator: CariocaCustomIndicatorView()
)
carioca.addInHostView()
}
Managing rotation
To be able to manage the rotation of the menu, you'll need to forward the rotation event to your menu instance.
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
coordinator.animateAlongsideTransition(in: self.view, animation: nil, completion: { [weak self] _ in
self?.carioca?.hostViewDidRotate()
})
}
Creating your custom indicator
Here's the simplest custom indicator. Feel free to check the CariocaIndicatorConfiguration extension for more customisation possibilities.
class CariocaCustomIndicatorView: UIView, CariocaIndicatorConfiguration {
///This will use the basic shape, and change the color to black.
var color: UIColor = UIColor.black
}
Boomerang
A boomerang always comes back to it's original place.
By default, the boomerang is set to none
. It means that the menu will stay where the user let it.
The other boomerang options are :
horizontal
: The indicator will return always on the original edge.vertical
: The indicator will return always on the original Y position. It may switch from Edge.originalPosition
: The indicator will always come back to it's original position
๐จโ๐ป TODO
- Add a check for the edges at the initialisation. (Only .left & .right are allowed)
- Add UI Tests
- Add a
live tutorial
to indicate users how to get the most of this menu
โ ๏ธ Known issues
Check the (GitHub issues)
๐ค FAQ
๐ Why should I use CariocaMenu
?
You're starting a new iOS app, and you want to innovate on the user experience.
CariocaMenu
?
๐ง๐ท Why the name I didn't want to use the same naming convention that EVERYONE uses. I could have named it ASSuperCoolMenu
, but it sucks.
A Carioca
is someone who lives in Rio de Janeiro
๐ค๐ผ Contact
โค๏ธ Contributions
This is an open source project, feel free to contribute!
- Open an issue.
- Propose your own fixes, suggestions and open a pull request with the changes.
See all contributors
SwiftPlate
Project generated with๐ License
CariocaMenu is released under the MIT license. See LICENSE for details.