Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/igenius-srl/igcolorpicker
A customizable color picker for iOS in Swift
https://github.com/igenius-srl/igcolorpicker
color-picker colorpickerview crystal igenius ios-color swift swiftcolorpicker
Last synced: about 1 month ago
JSON representation
A customizable color picker for iOS in Swift
- Host: GitHub
- URL: https://github.com/igenius-srl/igcolorpicker
- Owner: iGenius-Srl
- License: mit
- Created: 2017-01-23T16:06:22.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2021-06-17T12:29:00.000Z (over 3 years ago)
- Last Synced: 2024-09-28T22:20:55.180Z (about 2 months ago)
- Topics: color-picker, colorpickerview, crystal, igenius, ios-color, swift, swiftcolorpicker
- Language: Swift
- Homepage:
- Size: 505 KB
- Stars: 277
- Watchers: 18
- Forks: 79
- Open Issues: 19
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
![alt text](https://github.com/iGenius-Srl/IGColorPicker/blob/master/Resources/Logo.png "IGColorPicker")
IGColorPicker is a fantastic color picker 🎨 written in Swift.
![alt text](https://github.com/iGenius-Srl/IGColorPicker/blob/master/Resources/wall-examples.png "Examples")
## Table of Contents
* [**Documentation**](#documentation)
* [Colors](#colors)
* [Style](#style)
* [Other features](#other-features)
* [**Installation**](#installation)
* [Example](#example)
* [**Getting Started**](#getting-started)
* [ColorPickerView](#colorpickerview)
* [Delegate](#delegate)
* [Layout](#layout)
* [**Project Details**](#project-details)
* [Requirements](#requirements)
* [Contributing](#contributing)
* [Author](#author)
* [License](#license)## Documentation
### Colors
The color picker comes with our set of colors:![alt text](https://github.com/iGenius-Srl/IGColorPicker/blob/master/Resources/Palette.png "Color Palette")
But if you don't like them, you are free to use your own colors 🖍:
```swiftcolorPickerView.colors = [UIColor.red, UIColor.yellow, UIColor.green, UIColor.black]
```
### Style
* **style** ```enum```: look and feel of color picker cells
* **circle**![alt text](https://github.com/iGenius-Srl/IGColorPicker/blob/master/Resources/Circle.png "Circle style")
* **square**
![alt text](https://github.com/iGenius-Srl/IGColorPicker/blob/master/Resources/Square.png "Square style")
* **selectionStyle** ```enum```: style applied when a color is selected
* **check**![alt text](https://github.com/iGenius-Srl/IGColorPicker/blob/master/Resources/Check.png "Check selection style")
* **none**
![alt text](https://github.com/iGenius-Srl/IGColorPicker/blob/master/Resources/None.png "None selection style")
### Other features
* **preselectedIndex** ```Int?```: the index of the preselected color in the color picker* **isSelectedColorTappable** ```Bool```: if true, the selected color can be deselected by a tap
* **scrollToPreselectedIndex** ```Bool```: if true, the preselectedIndex is showed in the center of the color picker
## Installation
IGColorPicker is available through [CocoaPods](http://cocoapods.org). To install
it, simply add the following line to your `Podfile`:```ruby
pod 'IGColorPicker'
```
### ExampleTo run the example project, clone the repo, and run `pod install` from the Example directory first.
## Getting Started
### ColorPickerView`ColorPickerView` is just a class that inheritance from `UIView`, so you can both use a storyboard or you can create the color picker programmatically:
#### Storyboard
* Add a `UIView` to the storyboard. Go to the **Identity inspector** and in set its class to `ColorPickerView`.
* Just drag and drop the view in the correct class 🤙🏻#### Programmatically
Just initialize the color picker like one would initialize a `UIView`, and add it as a subview to your view hierarchy.```swift
import IGColorPickerclass ViewController {
var colorPickerView: ColorPickerView!override func viewDidLoad() {
super.viewDidLoad()colorPickerView = ColorPickerView(frame: CGRect(x: 0.0, y: 0.0, width: widthSize, height: heightSize))
view.addSubview(colorPickerView)
}}
```
### Delegate
`ColorPickerViewDelegate` is the delegate protocol that recognizes the tap gesture on a color. This is an option delegate, but if you need to know when the user selects a color you should implement it.```swift
// Set the delegate 🙋🏻♂️
colorPickerView.delegate = self// MARK: - ColorPickerViewDelegate
extension ViewController: ColorPickerViewDelegate {func colorPickerView(_ colorPickerView: ColorPickerView, didSelectItemAt indexPath: IndexPath) {
// A color has been selected
}// This is an optional method
func colorPickerView(_ colorPickerView: ColorPickerView, didDeselectItemAt indexPath: IndexPath) {
// A color has been deselected
}}
```
### Layout
Every developer can customize the color picker layout in the way to fit with their design. To do that you have to implement our layout delegate `ColorPickerViewDelegateFlowLayout`
```swift
// Set the delegate 🙋🏻♂️
colorPickerView.layoutDelegate = self// MARK: - ColorPickerViewDelegateFlowLayout
extension ViewController: ColorPickerViewDelegateFlowLayout {// ------------------------------------------------------------------
// All these methods are optionals, your are not to implement them 🖖🏻
// ------------------------------------------------------------------func colorPickerView(_ colorPickerView: ColorPickerView, sizeForItemAt indexPath: IndexPath) -> CGSize {
// The size for each cell
// 👉🏻 WIDTH AND HEIGHT MUST BE EQUALS!
}func colorPickerView(_ colorPickerView: ColorPickerView, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
// Space between cells
}func colorPickerView(_ colorPickerView: ColorPickerView, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
// Space between rows
}func colorPickerView(_ colorPickerView: ColorPickerView, insetForSectionAt section: Int) -> UIEdgeInsets {
// Inset used aroud the view
}}
```
## Project Details
### Requirements
* Swift 4.1
* Xcode 9.0+
* iOS 8.3+### Contributing
Feel free to collaborate with ideas 💭 , issues ⁉️ and/or pull requests 🔃.Here is a list of ToDo about bug fix and new features you can work on:
* Custom check size
* Support to custom view in `ColorPickerViewSelectStyle`
* Support custom style in `ColorPickerViewStyle`
* Substitute `M13Checkbox` with another framework. Or just create a custom checkbox with animation**P.S.** If you use IGColorPicker in your app we would love to hear about it! 😉
### License
> Copyright (c) 2018 iGenius Srl
> Permission is hereby granted, free of charge, to any person obtaining a copy
> of this software and associated documentation files (the "Software"), to deal
> in the Software without restriction, including without limitation the rights
> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> copies of the Software, and to permit persons to whom the Software is
> furnished to do so, subject to the following conditions:> The above copyright notice and this permission notice shall be included in
> all copies or substantial portions of the Software.> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
> THE SOFTWARE.