{"id":2942,"url":"https://github.com/Ramotion/reel-search","last_synced_at":"2025-08-06T15:30:49.604Z","repository":{"id":52240968,"uuid":"33299082","full_name":"Ramotion/reel-search","owner":"Ramotion","description":":octocat: 🔍 RAMReel is a UI controller that allows you to choose options from a list. Swift UI library made by @Ramotion","archived":false,"fork":false,"pushed_at":"2020-04-06T06:56:52.000Z","size":7766,"stargazers_count":2535,"open_issues_count":5,"forks_count":185,"subscribers_count":54,"default_branch":"master","last_synced_at":"2024-12-06T11:05:40.294Z","etag":null,"topics":["component","ios","library","swift"],"latest_commit_sha":null,"homepage":"https://www.ramotion.com/agency/app-development/","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/Ramotion.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-04-02T08:51:50.000Z","updated_at":"2024-11-11T01:09:03.000Z","dependencies_parsed_at":"2022-08-30T23:51:36.357Z","dependency_job_id":null,"html_url":"https://github.com/Ramotion/reel-search","commit_stats":null,"previous_names":[],"tags_count":44,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ramotion%2Freel-search","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ramotion%2Freel-search/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ramotion%2Freel-search/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ramotion%2Freel-search/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ramotion","download_url":"https://codeload.github.com/Ramotion/reel-search/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228915470,"owners_count":17991410,"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":["component","ios","library","swift"],"created_at":"2024-01-05T20:16:26.957Z","updated_at":"2024-12-09T15:30:52.609Z","avatar_url":"https://github.com/Ramotion.png","language":"Swift","funding_links":["https://paypal.me/Ramotion"],"categories":["UI","Libs","Picker","Content","Swift","UI [🔝](#readme)"],"sub_categories":["TextField \u0026 TextView","UI","Layout","Other free courses","Text Field"],"readme":"\u003ca href=\"https://www.ramotion.com/agency/app-development/?utm_source=gthb\u0026utm_medium=repo\u0026utm_campaign=reel-search\"\u003e\u003cimg src=\"https://github.com/Ramotion/folding-cell/blob/master/header.png\"\u003e\u003c/a\u003e\n\n\u003ca href=\"https://github.com/Ramotion/reel-search\"\u003e\n\u003cimg align=\"left\" src=\"https://github.com/Ramotion/reel-search/blob/master/reel-search.gif\" width=\"480\" height=\"360\" /\u003e\u003c/a\u003e\n\n\u003cp\u003e\u003ch1 align=\"left\"\u003eREEL SEARCH\u003c/h1\u003e\u003c/p\u003e\n\n\u003ch4\u003eReel Search is a Swift UI controller that allows you to choose options from a list\u003c/h4\u003e\n\n\n___\n\n\n\n\u003cp\u003e\u003ch6\u003eWe specialize in the designing and coding of custom UI for Mobile Apps and Websites.\u003c/h6\u003e\n\u003ca href=\"https://www.ramotion.com/agency/app-development/?utm_source=gthb\u0026utm_medium=repo\u0026utm_campaign=reel-search\"\u003e\n\u003cimg src=\"https://github.com/ramotion/gliding-collection/raw/master/contact_our_team@2x.png\" width=\"187\" height=\"34\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cp\u003e\u003ch6\u003eStay tuned for the latest updates:\u003c/h6\u003e\n\u003ca href=\"https://goo.gl/rPFpid\" \u003e\n\u003cimg src=\"https://i.imgur.com/ziSqeSo.png/\" width=\"156\" height=\"28\"\u003e\u003c/a\u003e\u003c/p\u003e\n\n\u003c/br\u003e\n\n# RAMReel\n[![Swift 4.0](https://img.shields.io/badge/Swift-4.0-green.svg?style=flat)](https://developer.apple.com/swift/)\n[![CocoaPods](https://img.shields.io/cocoapods/p/RAMReel.svg)](https://cocoapods.org/pods/RAMReel)\n[![CocoaPods](https://img.shields.io/cocoapods/v/RAMReel.svg)](http://cocoapods.org/pods/RAMReel)\n[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Ramotion/reel-search)\n[![codebeat badge](https://codebeat.co/badges/a591dc07-0f55-4321-929b-b33904c3dca8)](https://codebeat.co/projects/github-com-ramotion-reel-search)\n[![Travis](https://img.shields.io/travis/Ramotion/reel-search.svg)](https://travis-ci.org/Ramotion/reel-search)\n[![Twitter](https://img.shields.io/badge/Twitter-@Ramotion-blue.svg?style=flat)](http://twitter.com/Ramotion)\n[![Donate](https://img.shields.io/badge/Donate-PayPal-blue.svg)](https://paypal.me/Ramotion)\n\n## Requirements\n\n- iOS 8.0+\n- Swift 4.0\n\n## Installation\n\nWe recommend using **[CocoaPods](https://cocoapods.org/)** to install our library.\n\nJust put this in your `Podfile`:\n\n~~~ruby\npod 'RAMReel'\n~~~\n\nor [Carthage](https://github.com/Carthage/Carthage) users can simply add `reel-search` to their `Cartfile`:\n```\ngithub \"Ramotion/reel-search\"\n```\n\n## Usage\n\nIn order to use our control you need to implement the following:\n\n### Types\n- **`CellClass`**: Your cell class must inherit from [`UICollectionViewCell`](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UICollectionViewCell_class/) and implement the [`ConfigurableCell`](https://rawgit.com/Ramotion/reel-search/master/docs/Protocols/ConfigurableCell.html) protocol. Or you can just use our predefined class [`RAMCell`](https://rawgit.com/Ramotion/reel-search/master/docs/Classes/RAMCell.html).\n- **`TextFieldClass`**: Any subclass of [`UITextField`](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextField_Class/) will do.\n- **`DataSource`**: Your type must implement the [`FlowDataSource`](https://rawgit.com/Ramotion/reel-search/master/docs/Protocols/FlowDataSource.html) protocol, with `QueryType` being `String` and `ResultType` being [`Renderable`](https://rawgit.com/Ramotion/reel-search/master/docs/Protocols/Renderable.html) and [`Parsable`](https://rawgit.com/Ramotion/reel-search/master/docs/Protocols/Parsable.html). Or you can just use our predefined class [`SimplePrefixQueryDataSource`](https://rawgit.com/Ramotion/reel-search/master/docs/Structs/SimplePrefixQueryDataSource.html), which has its `ResultType` set to `String`.\n\nNow you can use those types as generic parameters of type declaration of `RAMReel`:\n\n~~~swift\nRAMReel\u003cCellClass, TextFieldClass, DataSource\u003e\n~~~\n\n### Values\nNext you need to create an instance of `RAMReel`, and for that you need the following:\n\n- **`frame: CGRect`**: Rect, specifying where you want to put the control.\n- **`dataSource: DataSource`**: the source of data for the reel.\n- **`placeholder: String`** (*optional*): Placeholder text; by default, an empty string is used.\n- **`hook: DataSource.ResultType -\u003e Void`** (*optional*): Action to perform on element selection, `nil` by default. You can add additional hooks later, if you need multiple actions performed.\n\nLet's use it to create an instance of `RAMReel`:\n\n~~~swift\nlet ramReel = RAMReel\u003cCellClass, TextFieldClass, DataSource\u003e(frame: frame, dataSource: dataSource, placeholder: placeholder, hook: hook)\n~~~\n\n### Adding action hooks\n\nTo add extra actions you may append `DataSource.ResultType -\u003e Void` functions to `RAMReel` object property `hooks`:\n\n~~~swift\nramReel.hooks.append { data in\n\t// your code goes here\n}\n~~~\n\n### Putting on the view\n\nAnd the final step, showing `RAMReel` on your view:\n\n~~~swift\nramReel.view.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]\nyourView.addSubview(ramReel.view)\n~~~\n\nIf you have visual problems, try calling  [`prepareForViewing`](https://rawgit.com/Ramotion/reel-search/master/docs/Classes/RAMReel.html#/s:FC7RAMReel7RAMReel17prepareForViewingu1_Rdq_CSo20UICollectionViewCellq_S_16ConfigurableCelldq0_CSo11UITextFieldq1_S_14FlowDataSourceqq_S2_8DataTypeS_8Parsableqq_S2_8DataTypeS_10Renderablezqq_S2_8DataTypeqq1_S4_10ResultTypezqq1_S4_9QueryTypeSS_FGS0_q_q0_q1__FT_T_) before showing your view.\n\nLike this:\n\n~~~swift\noverride func viewDidLayoutSubviews() {\n\tsuper.viewDidLayoutSubviews()\n\tramReel.prepareForViewing()\n}\n~~~\n\n### Theming\n\nIf you want to change `RAMReel` look and feel, you can use theming.\n\nTo do so, you just to have to implement the [`Theme`](https://rawgit.com/Ramotion/reel-search/master/docs/Protocols/Theme.html) protocol in your class/structure and set your `RAMReel` object's `theme` property to your theme.\n\nOr you can just use the predefined instance of type [`RAMTheme`](https://rawgit.com/Ramotion/reel-search/master/docs/Structs/RAMTheme.html).\n\n~~~swift\nlet textColor: UIColor\nlet listBackgroundColor: UIColor\nlet font: UIFont\n\nlet theme = RAMTheme(textColor: textColor, listBackgroundColor: listBackgroundColor, font: font)\n~~~\n\n### Docs\n\n[![CocoaPods](https://img.shields.io/cocoapods/metrics/doc-percent/RAMReel.svg)](https://rawgit.com/Ramotion/reel-search/master/docs/index.html)\n\nSee more at [RAMReel docs](https://rawgit.com/Ramotion/reel-search/master/docs/index.html)\n\n\u003cbr\u003e\n\n## 📄 License\n\nReel Search is released under the MIT license.\nSee [LICENSE](./LICENSE) for details.\n\nThis library is a part of a \u003ca href=\"https://github.com/Ramotion/swift-ui-animation-components-and-libraries\"\u003e\u003cb\u003eselection of our best UI open-source projects.\u003c/b\u003e\u003c/a\u003e\n\nIf you use the open-source library in your project, please make sure to credit and backlink to www.ramotion.com\n\n## 📱 Get the Showroom App for iOS to give it a try\nTry this UI component and more like this in our iOS app. Contact us if interested.\n\n\u003ca href=\"https://itunes.apple.com/app/apple-store/id1182360240?pt=550053\u0026ct=reel-search\u0026mt=8\" \u003e\n\u003cimg src=\"https://github.com/ramotion/gliding-collection/raw/master/app_store@2x.png\" width=\"117\" height=\"34\"\u003e\u003c/a\u003e\n\n\u003ca href=\"https://www.ramotion.com/agency/app-development/?utm_source=gthb\u0026utm_medium=repo\u0026utm_campaign=reel-search\"\u003e\n\u003cimg src=\"https://github.com/ramotion/gliding-collection/raw/master/contact_our_team@2x.png\" width=\"187\" height=\"34\"\u003e\u003c/a\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRamotion%2Freel-search","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FRamotion%2Freel-search","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRamotion%2Freel-search/lists"}