{"id":2604,"url":"https://github.com/zigzagg16/cariocamenu","last_synced_at":"2025-10-21T10:42:35.071Z","repository":{"id":56905674,"uuid":"43246154","full_name":"zigzagg16/cariocamenu","owner":"zigzagg16","description":"The fastest zero-tap iOS menu.","archived":true,"fork":false,"pushed_at":"2020-04-06T07:23:32.000Z","size":6919,"stargazers_count":779,"open_issues_count":1,"forks_count":49,"subscribers_count":20,"default_branch":"master","last_synced_at":"2024-05-29T04:52:16.977Z","etag":null,"topics":["gesture-driven-animations","ios","ios-animation","ios-ui","menu-navigation","swift-3","swift-library","swipe","ui-components"],"latest_commit_sha":null,"homepage":"http://arn00s.github.io/cariocamenu/","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zigzagg16.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-09-27T12:43:19.000Z","updated_at":"2024-05-27T16:58:07.000Z","dependencies_parsed_at":"2022-08-20T19:20:29.278Z","dependency_job_id":null,"html_url":"https://github.com/zigzagg16/cariocamenu","commit_stats":null,"previous_names":["zigzagg16/cariocamenu","arn00s/cariocamenu"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zigzagg16%2Fcariocamenu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zigzagg16%2Fcariocamenu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zigzagg16%2Fcariocamenu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zigzagg16%2Fcariocamenu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zigzagg16","download_url":"https://codeload.github.com/zigzagg16/cariocamenu/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246262490,"owners_count":20749170,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gesture-driven-animations","ios","ios-animation","ios-ui","menu-navigation","swift-3","swift-library","swipe","ui-components"],"created_at":"2024-01-05T20:16:18.123Z","updated_at":"2025-10-21T10:42:29.493Z","avatar_url":"https://github.com/zigzagg16.png","language":"Swift","funding_links":[],"categories":["UI","Menu"],"sub_categories":["Menu","Layout","Other free courses"],"readme":"![](docs/readme_header.jpg)\n\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](http://makeapullrequest.com)\n[![Carthage compatible](https://img.shields.io/badge/Carthage-Compatible-brightgreen.svg?style=flat)](https://github.com/Carthage/Carthage)\n[![Version](https://img.shields.io/cocoapods/v/Hero.svg?style=flat)](http://cocoapods.org/pods/Hero)\n![iOS 9.0+](https://img.shields.io/badge/iOS-9.0%2B-blue.svg)\n![Swift 4.0+](https://img.shields.io/badge/Swift-4.0%2B-orange.svg)\n[![License](https://img.shields.io/cocoapods/l/Hero.svg?style=flat)](https://github.com/arn00s/cariocamenu/blob/master/LICENSE?raw=true)\n[![CocoaPods](https://img.shields.io/cocoapods/dt/CariocaMenu.svg)]()\n[![Twitter URL](https://img.shields.io/twitter/url/https/github.com/arn00s/cariocamenu.svg?style=social)](https://twitter.com/intent/tweet?text=This%20menu%20is%20awesome:\u0026url=https%3A%2F%2Fgithub.com%2Farn00s%2Fcariocamenu)\n\n## ⚡️ Quicklook\n\nThe fastest zero-tap iOS menu\n\nCariocaMenu is a **simple**, **elegant**, **fast** navigation menu for your **iOS** apps.\n\n![](https://raw.githubusercontent.com/arn00s/cariocamenu/master/cariocamenu.gif)\n\n## 🏆 Features\n\n- [x] Accessible from a single swipe of the left/right screen edge\n- [x] Accessible with a tap on the indicator\n- [x] Customisable menu indicator\n- [x] Menu Item supports image \u0026 emoji/text\n- [x] Boomerang mode\n- [x] Supports rotation (Full AutoLayout)\n- [x] Supports iPhone X \u0026 the Notch !\n- [x] [Complete Technical Documentation](http://arn00s.github.io/cariocamenu/)\n\n## 📝 Requirements\n\n- AutoLayout\n- iOS 9.0+\n- Swift 4.0\n\n## 📢 Communication\n\n- If you **need help**, use [Stack Overflow](http://stackoverflow.com/questions/tagged/CariocaMenu). (Tag 'CariocaMenu')\n- If you'd like to **ask a general question**, use [Stack Overflow](http://stackoverflow.com/questions/tagged/CariocaMenu).\n- If you **found a bug**, open an issue.\n- If you **have a feature request**, open an issue.\n- If you **want to contribute**, submit a pull request.\n- If you **use the control**, contact me to mention your app on this page.\n\n## 📲 Installation\n\n### CocoaPods\nCariocaMenu is now available on [CocoaPods](http://cocoapods.org).\nSimply add the following to your project Podfile, and you'll be good to go.\n\n```ruby\nuse_frameworks!\n\npod 'CariocaMenu', '~\u003e 2.0.1'\n```\n\n### Carthage\n\n[Carthage](https://github.com/Carthage/Carthage) is a decentralised dependency manager that builds your dependencies and provides you with binary frameworks.\n\nYou can install Carthage with [Homebrew](http://brew.sh/) using the following command:\n\n```bash\n$ brew update\n$ brew install carthage\n```\n\nTo integrate CariocaMenu into your Xcode project using Carthage, specify it in your `Cartfile`:\n\n```ogdl\ngithub \"arn00s/cariocamenu\"\n```\n\nRun `carthage` to build the framework and drag the built `CariocaMenu.framework` into your Xcode project.\n\n### Manually\n\nIf you prefer, you can integrate CariocaMenu into your project manually.\n\nJust Drag\u0026Drop all the files under `Sources/` into your project.\n\n---\n\n## 💻 Usage\n\n### Preparing your menu controller\n\nTo create and display your menu, you'll need to create a custom **CariocaController** (UITableViewController \u0026 CariocaDataSource)\n\nThis will define your menu settings \u0026 appearance. Check **DemoMenuContentController.swift** for code sample.\n\n### Creating your menu\n\nFor the complete code, check **MainViewController.swift**.\n```swift\nif let controller = self.storyboard?.instantiateViewController(withIdentifier: \"DemoMenu\")\n    as? CariocaController {\n      addChildViewController(controller)\n      carioca = CariocaMenu(controller: controller,\n                            hostView: self.view,\n                            edges: [.right, .left],\n                            delegate: self,\n                            indicator: CariocaCustomIndicatorView()\n                            )\n      carioca.addInHostView()\n}\n```\n\n### Managing rotation\n\nTo be able to manage the rotation of the menu, you'll need to forward the rotation event to your menu instance.\n\n```swift\noverride func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {\n  coordinator.animateAlongsideTransition(in: self.view, animation: nil, completion: { [weak self] _ in\n    self?.carioca?.hostViewDidRotate()\n  })\n}\n```\n\n### Creating your custom indicator\n\nHere's the simplest custom indicator. Feel free to check the **CariocaIndicatorConfiguration** extension for more customisation possibilities.\n\n```swift\nclass CariocaCustomIndicatorView: UIView, CariocaIndicatorConfiguration {\n  ///This will use the basic shape, and change the color to black.\n  var color: UIColor = UIColor.black\n}\n```\n\n### Boomerang\n\nA boomerang always comes back to it's original place.\nBy default, the boomerang is set to `none`. It means that the menu will stay where the user let it.\n\nThe other boomerang options are :\n\n- `horizontal` : The indicator will return always on the original edge.\n- `vertical` : The indicator will return always on the original Y position. It may switch from Edge.\n- `originalPosition` : The indicator will always come back to it's original position\n\n## 👨‍💻 TODO\n\n- Add a check for the edges at the initialisation. (Only .left \u0026 .right are allowed)\n- Add UI Tests\n- Add a `live tutorial` to indicate users how to get the most of this menu\n\n## ⚠️ Known issues\n\nCheck the ([GitHub issues](https://github.com/arn00s/CariocaMenu/issues))\n\n## 🤔 FAQ\n\n### 😍 Why should I use `CariocaMenu`?\n\nYou're starting a new iOS app, and you want to innovate on the user experience.\n\n### 🇧🇷 Why the name `CariocaMenu`?\n\nI didn't want to use the same naming convention that **EVERYONE** uses. I could have named it `ASSuperCoolMenu`, but it sucks.\nA `Carioca` is someone who lives in Rio de Janeiro 🇧🇷. I lived there for two months, and this idea was born while I was there.\n\n## 🤙🏼 Contact\n\n- [twitter](https://twitter.com/mmommommomo)\n\n## ❤️ Contributions\nThis is an open source project, feel free to contribute!\n- Open an [issue](https://github.com/arn00s/cariocamenu/issues/new).\n- Propose your own fixes, suggestions and open a pull request with the changes.\n\nSee [all contributors](https://github.com/arn00s/cariocamenu/graphs/contributors)\n\n###### Project generated with [SwiftPlate](https://github.com/JohnSundell/SwiftPlate)\n\n## 📝 License\n\nCariocaMenu is released under the MIT license. See LICENSE for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzigzagg16%2Fcariocamenu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzigzagg16%2Fcariocamenu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzigzagg16%2Fcariocamenu/lists"}