Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lojals/ReactionButton
Since Facebook introduced reactions in 2016, it became a standard in several applications as a way for users to interact with content. ReactionButton is a control that allows developers to add this functionality to their apps in an easy way.
https://github.com/lojals/ReactionButton
control darkmode reactions selector swift uikit
Last synced: 15 days ago
JSON representation
Since Facebook introduced reactions in 2016, it became a standard in several applications as a way for users to interact with content. ReactionButton is a control that allows developers to add this functionality to their apps in an easy way.
- Host: GitHub
- URL: https://github.com/lojals/ReactionButton
- Owner: lojals
- License: mit
- Created: 2016-02-29T18:02:55.000Z (almost 9 years ago)
- Default Branch: main
- Last Pushed: 2021-01-16T07:11:47.000Z (almost 4 years ago)
- Last Synced: 2024-11-24T09:35:06.434Z (28 days ago)
- Topics: control, darkmode, reactions, selector, swift, uikit
- Language: Swift
- Homepage:
- Size: 2.16 MB
- Stars: 311
- Watchers: 10
- Forks: 42
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ios - JOEmojiableBtn - Emoji selector like Facebook Reactions. (UI / Button)
README
Since Facebook introduced reactions in 2016, it became a standard in several applications as a way for users to interact with content. ReactionButton is a control that allows developers to add this functionality to their apps in an easy way.
## Features
- [x] Support of Dark Mode
- [x] Customizable layout using `ReactionButtonDelegateLayout`
- [x] Extensible DataSource for the control
- [x] Layout support for scrolling interfaces (UICollectionView/UITableView)
- [x] Codable initializer for usage on storyboards
- [x] Events## Requirements
* iOS 13.0+
* Swift 5.0+## Installation
* [Installation guide](https://github.com/lojals/ReactionButton/wiki/Installation-guide)
## Usage
### 1. Basic Instance
There are multiple ways to instantiate a `ReactionButton`, using a frame, storyboards, or an empty convenience initializer.#### Example Code
```swift
let buttonSample = ReactionButton(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
buttonSample.dataSource = self
view.addSubview(buttonSample)
```![Basic usage](https://user-images.githubusercontent.com/6756995/97816507-652d4780-1c5b-11eb-8479-0d003197b149.gif)
> Images from [Trump reactionpacks style](http://www.reactionpacks.com/packs/2c1a1e41-e9e9-407a-a532-3bfdfef6b3e6).### 2. Delegate
The `ReactionButton` has a delegate to communicate events of option selection, option focus, and cancel of actions. To use it, set the `ReactionButtonDelegate` conform as a delegate.```swift
let buttonSample = ReactionButton(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
buttonSample.delegate = self
view.addSubview(buttonSample)
```
![Delegate example](https://user-images.githubusercontent.com/6756995/97816887-4e3c2480-1c5e-11eb-9028-5fed1ed22458.gif)
> Images from [Trump reactionpacks style](http://www.reactionpacks.com/packs/2c1a1e41-e9e9-407a-a532-3bfdfef6b3e6).### 3. Custom layout instance
`ReactionButton` allows customization of the layout with the help of `ReactionButtonDelegateLayout`. To use it, please conform to that protocol and set it as delegate (Same pattern as UICollectionView).```swift
func ReactionSelectorConfiguration(_ selector: ReactionButton) -> ReactionButton.Config {
ReactionButton.Config(spacing: 2,
size: 30,
minSize: 34,
maxSize: 45,
spaceBetweenComponents: 30)
}
```
You can custom your selector with the following variables, used in the![New](https://user-images.githubusercontent.com/6756995/97817123-0cac7900-1c60-11eb-8df3-09ba7c19908b.png)
![sizes](https://i.imgur.com/yNfyP3c.png?1)
## Author
Jorge Ovalle, [email protected]