A UI controller that allows you to choose options from a list
reel-search
RAMReel is a UI controller that allows you to choose options from a list. Swift UI library made by @Ramotion
This project is maintained by Ramotion, Inc.
We specialize in the designing and coding of custom UI for Mobile Apps and Websites.
Looking for developers for your project?
This project is maintained by Ramotion, Inc. We specialize in the designing and coding of custom UI for Mobile Apps and Websites.
Requirements
- iOS 8.0+
- Swift 4.0
Installation
We recommend using CocoaPods to install our library.
Just put this in your Podfile
:
pod 'RAMReel'
or Carthage users can simply add reel-search
to their Cartfile
:
github "Ramotion/reel-search"
Usage
In order to use our control you need to implement the following:
Types
CellClass
: Your cell class must inherit fromUICollectionViewCell
and implement theConfigurableCell
protocol. Or you can just use our predefined classRAMCell
.TextFieldClass
: Any subclass ofUITextField
will do.DataSource
: Your type must implement theFlowDataSource
protocol, withQueryType
beingString
andResultType
beingRenderable
andParsable
. Or you can just use our predefined classSimplePrefixQueryDataSource
, which has itsResultType
set toString
.
Now you can use those types as generic parameters of type declaration of RAMReel
:
RAMReel<CellClass, TextFieldClass, DataSource>
Values
Next you need to create an instance of RAMReel
, and for that you need the following:
frame: CGRect
: Rect, specifying where you want to put the control.dataSource: DataSource
: the source of data for the reel.placeholder: String
(optional): Placeholder text; by default, an empty string is used.hook: DataSource.ResultType -> Void
(optional): Action to perform on element selection,nil
by default. You can add additional hooks later, if you need multiple actions performed.
Let's use it to create an instance of RAMReel
:
let ramReel = RAMReel<CellClass, TextFieldClass, DataSource>(frame: frame, dataSource: dataSource, placeholder: placeholder, hook: hook)
Adding action hooks
To add extra actions you may append DataSource.ResultType -> Void
functions to RAMReel
object property hooks
:
ramReel.hooks.append { data in
// your code goes here
}
Putting on the view
And the final step, showing RAMReel
on your view:
ramReel.view.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
yourView.addSubview(ramReel.view)
If you have visual problems, try calling prepareForViewing
before showing your view.
Like this:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
ramReel.prepareForViewing()
}
Theming
If you want to change RAMReel
look and feel, you can use theming.
To do so, you just to have to implement the Theme
protocol in your class/structure and set your RAMReel
object's theme
property to your theme.
Or you can just use the predefined instance of type RAMTheme
.
let textColor: UIColor
let listBackgroundColor: UIColor
let font: UIFont
let theme = RAMTheme(textColor: textColor, listBackgroundColor: listBackgroundColor, font: font)