├── .swift-version
├── demo.gif
├── Example
├── Example.xcodeproj
│ ├── xcuserdata
│ │ └── george.xcuserdatad
│ │ │ ├── xcdebugger
│ │ │ └── Breakpoints_v2.xcbkptlist
│ │ │ └── xcschemes
│ │ │ ├── xcschememanagement.plist
│ │ │ └── Example.xcscheme
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcuserdata
│ │ │ └── george.xcuserdatad
│ │ │ └── UserInterfaceState.xcuserstate
│ └── project.pbxproj
├── Example
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ ├── Info.plist
│ ├── ViewController.swift
│ └── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
└── ExampleTests
│ ├── Info.plist
│ └── ExampleTests.swift
├── LICENSE
├── MaterialColorPicker.podspec
├── README.md
└── Source
├── MaterialColorPicker.swift
├── GMPalette.swift
└── GMColor.swift
/.swift-version:
--------------------------------------------------------------------------------
1 | 3.0
2 |
--------------------------------------------------------------------------------
/demo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gkye/MaterialColorPicker/HEAD/demo.gif
--------------------------------------------------------------------------------
/Example/Example.xcodeproj/xcuserdata/george.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/Example/Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Example/Example.xcodeproj/project.xcworkspace/xcuserdata/george.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gkye/MaterialColorPicker/HEAD/Example/Example.xcodeproj/project.xcworkspace/xcuserdata/george.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/Example/Example/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // Example
4 | //
5 | // Created by George on 2016-06-09.
6 | // Copyright © 2016 George Kye. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | @UIApplicationMain
12 | class AppDelegate: UIResponder, UIApplicationDelegate {
13 |
14 | var window: UIWindow?
15 |
16 |
17 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
18 | // Override point for customization after application launch.
19 | return true
20 | }
21 |
22 | }
23 |
24 |
--------------------------------------------------------------------------------
/Example/Example.xcodeproj/xcuserdata/george.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | Example.xcscheme
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | 5E560B7B1D0A288000F065B5
16 |
17 | primary
18 |
19 |
20 | 5E560B8F1D0A288200F065B5
21 |
22 | primary
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/Example/Example/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/Example/ExampleTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2016 = George Kye
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
20 |
--------------------------------------------------------------------------------
/MaterialColorPicker.podspec:
--------------------------------------------------------------------------------
1 | #
2 | # Be sure to run `pod lib lint MaterialColorPicker.podspec' to ensure this is a
3 | # valid spec before submitting.
4 | #
5 | # Any lines starting with a # are optional, but their use is encouraged
6 | # To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html
7 | #
8 |
9 | Pod::Spec.new do |s|
10 | s.name = 'MaterialColorPicker'
11 | s.version = '0.2.0'
12 | s.summary = 'Drop in customizable color picker with material color support.'
13 |
14 |
15 | s.description = 'Customizable color picker with material color support.'
16 |
17 | s.homepage = 'https://github.com/gkye/MaterialColorPicker.git'
18 | s.license = { :type => 'MIT', :file => 'LICENSE' }
19 | s.author = { '=' => 'qwstnz@gmail.com' }
20 | s.source = { :git => 'https://github.com/gkye/MaterialColorPicker.git', :tag => s.version.to_s }
21 | s.social_media_url = 'https://twitter.com/kyegeorge'
22 |
23 | s.ios.deployment_target = '8.0'
24 |
25 | s.source_files = 'Source/**/*'
26 | s.frameworks = 'UIKit'
27 |
28 | end
29 |
--------------------------------------------------------------------------------
/Example/ExampleTests/ExampleTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ExampleTests.swift
3 | // ExampleTests
4 | //
5 | // Created by George on 2016-06-09.
6 | // Copyright © 2016 George Kye. All rights reserved.
7 | //
8 |
9 | import XCTest
10 | @testable import Example
11 |
12 | class ExampleTests: XCTestCase {
13 |
14 | override func setUp() {
15 | super.setUp()
16 | // Put setup code here. This method is called before the invocation of each test method in the class.
17 | }
18 |
19 | override func tearDown() {
20 | // Put teardown code here. This method is called after the invocation of each test method in the class.
21 | super.tearDown()
22 | }
23 |
24 | func testExample() {
25 | // This is an example of a functional test case.
26 | // Use XCTAssert and related functions to verify your tests produce the correct results.
27 | }
28 |
29 | func testPerformanceExample() {
30 | // This is an example of a performance test case.
31 | self.measure {
32 | // Put the code you want to measure the time of here.
33 | }
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/Example/Example/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/Example/Example/ViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.swift
3 | // Example
4 | //
5 | // Created by George on 2016-06-09.
6 | // Copyright © 2016 George Kye. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 |
12 | class ViewController: UIViewController, MaterialColorPickerDelegate {
13 |
14 | var pickerView: MaterialColorPicker!
15 |
16 | override func viewDidLoad() {
17 | super.viewDidLoad()
18 | pickerView = MaterialColorPicker(frame: CGRect(x: 0, y: 20, width: self.view.frame.width, height: 60))
19 | self.view.addSubview(pickerView)
20 | pickerView.delegate = self
21 | pickerView.shuffleColors = true
22 | pickerView.selectionColor = UIColor.cyan
23 | pickerView.selectedBorderWidth = 5
24 | pickerView.cellSpacing = 10
25 |
26 | }
27 |
28 | func didSelectColorAtIndex(_ MaterialColorPickerView: MaterialColorPicker, index: Int, color: UIColor) {
29 | print("Index is ", index)
30 | self.view.backgroundColor = color
31 | }
32 |
33 | func sizeForCellAtIndex(_ MaterialColorPickerView: MaterialColorPicker, index: Int) -> CGSize {
34 | if index == 3{
35 | return CGSize(width: 50, height: 50)
36 | }else{
37 | return CGSize(width: 50, height: 50)
38 | }
39 | }
40 |
41 |
42 | @IBAction func selectIndex(_ sender: UIButton){
43 | pickerView.selectCellAtIndex(30)
44 | }
45 |
46 | }
47 |
--------------------------------------------------------------------------------
/Example/Example/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/Example/Example/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # MaterialColorPicker
2 |
3 | [](https://codebeat.co/projects/github-com-gkye-materialcolorpicker)
4 | [](http://cocoapods.org/pods/MaterialColorPicker)
5 | [](http://cocoapods.org/pods/MaterialColorPicker)
6 | [](http://cocoapods.org/pods/MaterialColorPicker)
7 |
8 | 
9 |
10 | ## Installation
11 |
12 | MaterialColorPicker is available through [CocoaPods](http://cocoapods.org). To install
13 | it, simply add the following line to your Podfile:
14 |
15 | ```ruby
16 | pod "MaterialColorPicker"
17 | ```
18 |
19 | # Usage
20 |
21 | #### Delegate
22 | ```swift
23 | func didSelectColorAtIndex(view: UIView, index: Int, color: UIColor)
24 | ```
25 | Returns the index and color of the selected item.
26 |
27 | ```swift
28 | func sizeForCellAtIndex(MaterialColorPickerView: MaterialColorPicker, index: Int)->CGSize
29 | ```
30 | Set size of cell at a spefic index
31 | #### DataSource
32 |
33 | ```swift
34 | func colors()->[UIColor]
35 | ```
36 | Set colors for MaterialColorPicker (Default colors will be used if no `dataSource` set)
37 | google-material-color-swift by katopz included in project
38 |
39 | #### Properties
40 | ```swift
41 | public var shuffleColors: Bool = false //Shuffles colors within ColorPicker
42 | ```
43 | ```swift
44 | public func selectCellAtIndex(index: Int)
45 | ```
46 | Programtically select a cell at an index
47 |
48 | ## Author
49 |
50 | George Kye
51 |
52 | ## License
53 |
54 | MaterialColorPicker is available under the MIT license. See the LICENSE file for more info.
55 |
56 | # Change Log
57 | 0.2.0
58 | - Updated project to support swift3
59 | - Updated demo project to reflect changes
60 |
61 | 0.1.8
62 | * Added public selectionColor property.
63 | * Added selectedBorderWidth property.
64 | * Added cellSpacing property.
65 |
66 |
67 | 0.1.6
68 | - Added `selectCellAtIndex` function and `sizeForCellAtIndex` delegate
69 |
70 | 0.1.5
71 | - Added `itemSize` public property to allow configuration of color picker cell.
72 |
73 |
74 |
75 |
--------------------------------------------------------------------------------
/Example/Example.xcodeproj/xcuserdata/george.xcuserdatad/xcschemes/Example.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
33 |
39 |
40 |
41 |
42 |
43 |
49 |
50 |
51 |
52 |
53 |
54 |
64 |
66 |
72 |
73 |
74 |
75 |
76 |
77 |
83 |
85 |
91 |
92 |
93 |
94 |
96 |
97 |
100 |
101 |
102 |
--------------------------------------------------------------------------------
/Source/MaterialColorPicker.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MaterialColorPicker.swift
3 | // MaterialColorPicker
4 | //
5 | // Created by George Kye on 2016-06-09.
6 | // Copyright © 2016 George Kye. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | private class MaterialColorPickerCell: UICollectionViewCell{
13 |
14 | func setup(){
15 | self.layer.cornerRadius = self.bounds.width / 2
16 | }
17 |
18 | //MARK: - Lifecycle
19 |
20 | init() {
21 | super.init(frame: CGRect.zero)
22 | setup()
23 | }
24 |
25 | override init(frame: CGRect) {
26 | super.init(frame: frame)
27 | setup()
28 | }
29 |
30 | required init?(coder aDecoder: NSCoder) {
31 | fatalError("init(coder:) has not been implemented")
32 | }
33 | }
34 |
35 |
36 | @objc public protocol MaterialColorPickerDataSource {
37 | /**
38 | Set colors for MaterialColorPicker (optional. Default colors will be used if nil)
39 | - returns: should return an array of `UIColor`
40 | */
41 | func colors()->[UIColor]
42 | }
43 |
44 |
45 | @objc public protocol MaterialColorPickerDelegate{
46 | /**
47 | Return selected index and color for index
48 | - parameter index: index of selected item
49 | - parameter color: background color of selected item
50 | */
51 | func didSelectColorAtIndex(_ materialColorPickerView: MaterialColorPicker, index: Int, color: UIColor)
52 |
53 | /**
54 | Return a size for the current cell (overrides default size)
55 | - parameter MaterialColorPickerView: current MaterialColorPicker instantse
56 | - parameter index: index of cell
57 | - returns: CGSize
58 | */
59 | @objc optional func sizeForCellAtIndex(_ materialColorPickerView: MaterialColorPicker, index: Int)->CGSize
60 | }
61 |
62 | open class MaterialColorPicker: UIView, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout{
63 |
64 | fileprivate var selectedIndex: IndexPath?
65 | lazy var colors: [UIColor] = {
66 | let colors = GMPalette.allColors()
67 | return colors
68 | }()
69 |
70 | open var dataSource: MaterialColorPickerDataSource?{
71 | didSet{
72 | if let dsColors = dataSource?.colors(){
73 | self.colors = dsColors
74 | }
75 | }
76 | }
77 |
78 | open var delegate: MaterialColorPickerDelegate?
79 |
80 | /// Shuffles colors within ColorPicker
81 | open var shuffleColors: Bool = false{
82 | didSet{
83 | if shuffleColors{ colors.shuffle() }
84 | }
85 | }
86 |
87 | /// Color for border of selected cell
88 | open var selectionColor: UIColor = UIColor.black
89 |
90 | /// Border width for selected Cell
91 | open var selectedBorderWidth: CGFloat = 2
92 |
93 | /// Set spacing between cells
94 | open var cellSpacing: CGFloat = 2
95 |
96 | //Setup collectionview and flow layout
97 | lazy var collectionView: UICollectionView = {
98 | let layout:UICollectionViewFlowLayout = UICollectionViewFlowLayout()
99 | layout.sectionInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
100 | layout.itemSize = CGSize(width: self.bounds.height, height: self.bounds.height)
101 | layout.minimumInteritemSpacing = 1
102 | layout.minimumLineSpacing = 1
103 | layout.scrollDirection = .horizontal
104 | let collectionView = UICollectionView(frame: self.frame, collectionViewLayout: layout)
105 | collectionView.dataSource = self
106 | collectionView.delegate = self
107 | collectionView.register(MaterialColorPickerCell.self, forCellWithReuseIdentifier: "Cell")
108 | collectionView.backgroundColor = UIColor.clear
109 | collectionView.showsVerticalScrollIndicator = false
110 | collectionView.showsHorizontalScrollIndicator = false
111 | return collectionView
112 | }()
113 |
114 | open override func layoutSubviews() {
115 | super.layoutSubviews()
116 | initialize()
117 | addContrains(self, subView: collectionView)
118 | }
119 |
120 | fileprivate func initialize() {
121 | collectionView.removeFromSuperview()
122 | self.addSubview(self.collectionView)
123 | }
124 |
125 | //Select index programtically
126 | open func selectCellAtIndex(_ index: Int){
127 | let indexPath = IndexPath(row: index, section: 0)
128 | selectedIndex = indexPath
129 | collectionView.selectItem(at: indexPath, animated: true, scrollPosition: .centeredHorizontally)
130 | self.delegate?.didSelectColorAtIndex(self, index: (self.selectedIndex! as NSIndexPath).item, color: colors[index])
131 | animateCell(manualSelection: true)
132 | }
133 |
134 | //MARK: CollectionView DataSouce
135 | open func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
136 | return colors.count
137 | }
138 |
139 | open func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
140 | let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! MaterialColorPickerCell
141 | cell.layer.masksToBounds = true
142 | cell.clipsToBounds = true
143 |
144 | cell.backgroundColor = colors[(indexPath as NSIndexPath).item]
145 | if indexPath == selectedIndex {
146 | cell.layer.borderWidth = selectedBorderWidth
147 | cell.layer.borderColor = selectionColor.cgColor
148 | }else{
149 | cell.layer.borderWidth = 0
150 | cell.layer.borderColor = UIColor.clear.cgColor
151 | }
152 | return cell
153 | }
154 |
155 | //MARK: CollectionView delegate
156 |
157 | open func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
158 | selectedIndex = indexPath
159 | animateCell()
160 | }
161 |
162 | open func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
163 | if let size = delegate?.sizeForCellAtIndex?(self, index: (indexPath as NSIndexPath).row){
164 | return size
165 | }
166 |
167 | return CGSize(width: self.bounds.height, height: self.bounds.height - 1)
168 | }
169 |
170 |
171 | open func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
172 | return cellSpacing
173 | }
174 |
175 |
176 |
177 | /**
178 | Animate cell on selection
179 | */
180 | fileprivate func animateCell(manualSelection: Bool = false){
181 | if let cell = collectionView.cellForItem(at: selectedIndex!){
182 | UIView.animate(withDuration: 0.3 / 1.5, animations: {() -> Void in
183 | cell.transform = CGAffineTransform.identity.scaledBy(x: 1.3, y: 1.3)
184 | }, completion: {(finished: Bool) -> Void in
185 | UIView.animate(withDuration: 0.3 / 2, animations: {() -> Void in
186 | cell.transform = CGAffineTransform.identity.scaledBy(x: 0.9, y: 0.9)
187 | }, completion: {(finished: Bool) -> Void in
188 | UIView.animate(withDuration: 0.3 / 2, animations: {() -> Void in
189 | cell.transform = CGAffineTransform.identity
190 | if !manualSelection{
191 | self.delegate?.didSelectColorAtIndex(self, index: (self.selectedIndex! as NSIndexPath).item, color: cell.backgroundColor!)
192 | }
193 | self.collectionView.reloadData()
194 | })
195 | })
196 | })
197 | }
198 | }
199 |
200 | fileprivate func addContrains(_ superView: UIView, subView: UIView){
201 | subView.translatesAutoresizingMaskIntoConstraints = false
202 | let views = ["myView" : subView]
203 | superView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[myView]|", options:[] , metrics: nil, views: views))
204 | superView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[myView]|", options:[] , metrics: nil, views: views))
205 | }
206 | }
207 |
208 |
209 | //Shuffle extension
210 |
211 | extension MutableCollection where Index == Int {
212 | /// Shuffle the elements of `self` in-place.
213 | mutating func shuffle() {
214 | // empty and single-element collections don't shuffle
215 | if count < 2 { return }
216 |
217 | for i in startIndex ..< endIndex - 1 {
218 | let j = Int(arc4random_uniform(UInt32(endIndex - i))) + i
219 | if i != j {
220 | swap(&self[i], &self[j])
221 | }
222 | }
223 | }
224 | }
225 |
--------------------------------------------------------------------------------
/Source/GMPalette.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GMPalette.swift
3 | // GMColor
4 | //
5 | // Created by Todsaporn Banjerdkit (katopz) on 12/22/14.
6 | // Copyright (c) 2014 Debokeh. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | public struct GMPalette {
12 |
13 | public static func MaterialPickerColors() -> [UIColor] {
14 | return [
15 | GMColor.redA700Color(), GMColor.pinkA700Color(), GMColor.pink50Color(),
16 | GMColor.purple50Color(), GMColor.deepPurpleA700Color(), GMColor.indigoA700Color(),
17 | GMColor.blue50Color(), GMColor.lightBlueA700Color(), GMColor.cyanA700Color(),
18 | GMColor.tealA700Color(), GMColor.greenA700Color(), GMColor.lightGreenA700Color(),
19 | GMColor.limeA700Color(), GMColor.yellowA700Color(), GMColor.yellowA700Color(),
20 | GMColor.amberA700Color(), GMColor.orangeA700Color(), GMColor.grey500Color(),
21 | GMColor.blueGrey300Color()
22 | ]
23 | }
24 | static func all() -> [[UIColor]] {
25 | return [red(), pink(), purple(),
26 | deepPurple(), indigo(), blue(),
27 | lightBlue(), cyan(), teal(),
28 | green(), lightGreen(), lime(),
29 | yellow(), amber(), orange(),
30 | deepOrange(), brown(), grey(),
31 | blueGrey(), blackAndWhite()
32 | ]
33 | }
34 |
35 | public static func allColors()->[UIColor]{
36 | var colors = [UIColor]()
37 | for c in all(){
38 | c.forEach{
39 | colors.append($0)
40 | }
41 | }
42 | return colors
43 | }
44 |
45 | public static func red() -> [UIColor] {
46 | return [GMColor.red50Color(), GMColor.red100Color(),
47 | GMColor.red200Color(), GMColor.red300Color(),
48 | GMColor.red400Color(), GMColor.red500Color(),
49 | GMColor.red600Color(), GMColor.red700Color(),
50 | GMColor.red800Color(), GMColor.red900Color(),
51 | GMColor.redA100Color(), GMColor.redA200Color(),
52 | GMColor.redA400Color(), GMColor.redA700Color()
53 | ]
54 | }
55 |
56 | public static func pink() -> [UIColor] {
57 | return [GMColor.pink50Color(), GMColor.pink100Color(),
58 | GMColor.pink200Color(), GMColor.pink300Color(),
59 | GMColor.pink400Color(), GMColor.pink500Color(),
60 | GMColor.pink600Color(), GMColor.pink700Color(),
61 | GMColor.pink800Color(), GMColor.pink900Color(),
62 | GMColor.pinkA100Color(), GMColor.pinkA200Color(),
63 | GMColor.pinkA400Color(), GMColor.pinkA700Color()
64 | ]
65 | }
66 |
67 | public static func purple() -> [UIColor] {
68 | return [GMColor.purple50Color(), GMColor.purple100Color(),
69 | GMColor.purple200Color(), GMColor.purple300Color(),
70 | GMColor.purple400Color(), GMColor.purple500Color(),
71 | GMColor.purple600Color(), GMColor.purple700Color(),
72 | GMColor.purple800Color(), GMColor.purple900Color(),
73 | GMColor.purpleA100Color(), GMColor.purpleA200Color(),
74 | GMColor.purpleA400Color(), GMColor.purpleA700Color()
75 | ]
76 | }
77 |
78 | public static func deepPurple() -> [UIColor] {
79 | return [GMColor.deepPurple50Color(), GMColor.deepPurple100Color(),
80 | GMColor.deepPurple200Color(), GMColor.deepPurple300Color(),
81 | GMColor.deepPurple400Color(), GMColor.deepPurple500Color(),
82 | GMColor.deepPurple600Color(), GMColor.deepPurple700Color(),
83 | GMColor.deepPurple800Color(), GMColor.deepPurple900Color(),
84 | GMColor.deepPurpleA100Color(), GMColor.deepPurpleA200Color(),
85 | GMColor.deepPurpleA400Color(), GMColor.deepPurpleA700Color()
86 | ]
87 | }
88 |
89 | public static func indigo() -> [UIColor] {
90 | return [GMColor.indigo50Color(), GMColor.indigo100Color(),
91 | GMColor.indigo200Color(), GMColor.indigo300Color(),
92 | GMColor.indigo400Color(), GMColor.indigo500Color(),
93 | GMColor.indigo600Color(), GMColor.indigo700Color(),
94 | GMColor.indigo800Color(), GMColor.indigo900Color(),
95 | GMColor.indigoA100Color(), GMColor.indigoA200Color(),
96 | GMColor.indigoA400Color(), GMColor.indigoA700Color()
97 | ]
98 | }
99 |
100 | public static func blue() -> [UIColor] {
101 | return [GMColor.blue50Color(), GMColor.blue100Color(),
102 | GMColor.blue200Color(), GMColor.blue300Color(),
103 | GMColor.blue400Color(), GMColor.blue500Color(),
104 | GMColor.blue600Color(), GMColor.blue700Color(),
105 | GMColor.blue800Color(), GMColor.blue900Color(),
106 | GMColor.blueA100Color(), GMColor.blueA200Color(),
107 | GMColor.blueA400Color(), GMColor.blueA700Color()
108 | ]
109 | }
110 |
111 | public static func lightBlue() -> [UIColor] {
112 | return [GMColor.lightBlue50Color(), GMColor.lightBlue100Color(),
113 | GMColor.lightBlue200Color(), GMColor.lightBlue300Color(),
114 | GMColor.lightBlue400Color(), GMColor.lightBlue500Color(),
115 | GMColor.lightBlue600Color(), GMColor.lightBlue700Color(),
116 | GMColor.lightBlue800Color(), GMColor.lightBlue900Color(),
117 | GMColor.lightBlueA100Color(), GMColor.lightBlueA200Color(),
118 | GMColor.lightBlueA400Color(), GMColor.lightBlueA700Color()
119 | ]
120 | }
121 |
122 | public static func cyan() -> [UIColor] {
123 | return [GMColor.cyan50Color(), GMColor.cyan100Color(),
124 | GMColor.cyan200Color(), GMColor.cyan300Color(),
125 | GMColor.cyan400Color(), GMColor.cyan500Color(),
126 | GMColor.cyan600Color(), GMColor.cyan700Color(),
127 | GMColor.cyan800Color(), GMColor.cyan900Color(),
128 | GMColor.cyanA100Color(), GMColor.cyanA200Color(),
129 | GMColor.cyanA400Color(), GMColor.cyanA700Color()
130 | ]
131 | }
132 |
133 |
134 | public static func teal() -> [UIColor] {
135 | return [GMColor.teal50Color(), GMColor.teal100Color(),
136 | GMColor.teal200Color(), GMColor.teal300Color(),
137 | GMColor.teal400Color(), GMColor.teal500Color(),
138 | GMColor.teal600Color(), GMColor.teal700Color(),
139 | GMColor.teal800Color(), GMColor.teal900Color(),
140 | GMColor.tealA100Color(), GMColor.tealA200Color(),
141 | GMColor.tealA400Color(), GMColor.tealA700Color()
142 | ]
143 | }
144 |
145 | public static func green() -> [UIColor] {
146 | return [GMColor.green50Color(), GMColor.green100Color(),
147 | GMColor.green200Color(), GMColor.green300Color(),
148 | GMColor.green400Color(), GMColor.green500Color(),
149 | GMColor.green600Color(), GMColor.green700Color(),
150 | GMColor.green800Color(), GMColor.green900Color(),
151 | GMColor.greenA100Color(), GMColor.greenA200Color(),
152 | GMColor.greenA400Color(), GMColor.greenA700Color()
153 | ]
154 | }
155 |
156 | public static func lightGreen() -> [UIColor] {
157 | return [GMColor.lightGreen50Color(), GMColor.lightGreen100Color(),
158 | GMColor.lightGreen200Color(), GMColor.lightGreen300Color(),
159 | GMColor.lightGreen400Color(), GMColor.lightGreen500Color(),
160 | GMColor.lightGreen600Color(), GMColor.lightGreen700Color(),
161 | GMColor.lightGreen800Color(), GMColor.lightGreen900Color(),
162 | GMColor.lightGreenA100Color(), GMColor.lightGreenA200Color(),
163 | GMColor.lightGreenA400Color(), GMColor.lightGreenA700Color()
164 | ]
165 | }
166 |
167 | public static func lime() -> [UIColor] {
168 | return [GMColor.lime50Color(), GMColor.lime100Color(),
169 | GMColor.lime200Color(), GMColor.lime300Color(),
170 | GMColor.lime400Color(), GMColor.lime500Color(),
171 | GMColor.lime600Color(), GMColor.lime700Color(),
172 | GMColor.lime800Color(), GMColor.lime900Color(),
173 | GMColor.limeA100Color(), GMColor.limeA200Color(),
174 | GMColor.limeA400Color(), GMColor.limeA700Color()
175 | ]
176 | }
177 |
178 | public static func yellow() -> [UIColor] {
179 | return [GMColor.yellow50Color(), GMColor.yellow100Color(),
180 | GMColor.yellow200Color(), GMColor.yellow300Color(),
181 | GMColor.yellow400Color(), GMColor.yellow500Color(),
182 | GMColor.yellow600Color(), GMColor.yellow700Color(),
183 | GMColor.yellow800Color(), GMColor.yellow900Color(),
184 | GMColor.yellowA100Color(), GMColor.yellowA200Color(),
185 | GMColor.yellowA400Color(), GMColor.yellowA700Color()
186 | ]
187 | }
188 |
189 | public static func amber() -> [UIColor] {
190 | return [GMColor.amber50Color(), GMColor.amber100Color(),
191 | GMColor.amber200Color(), GMColor.amber300Color(),
192 | GMColor.amber400Color(), GMColor.amber500Color(),
193 | GMColor.amber600Color(), GMColor.amber700Color(),
194 | GMColor.amber800Color(), GMColor.amber900Color(),
195 | GMColor.amberA100Color(), GMColor.amberA200Color(),
196 | GMColor.amberA400Color(), GMColor.amberA700Color()
197 | ]
198 | }
199 |
200 | public static func orange() -> [UIColor] {
201 | return [GMColor.orange50Color(), GMColor.orange100Color(),
202 | GMColor.orange200Color(), GMColor.orange300Color(),
203 | GMColor.orange400Color(), GMColor.orange500Color(),
204 | GMColor.orange600Color(), GMColor.orange700Color(),
205 | GMColor.orange800Color(), GMColor.orange900Color(),
206 | GMColor.orangeA100Color(), GMColor.orangeA200Color(),
207 | GMColor.orangeA400Color(), GMColor.orangeA700Color()
208 | ]
209 | }
210 |
211 | public static func deepOrange() -> [UIColor] {
212 | return [GMColor.deepOrange50Color(), GMColor.deepOrange100Color(),
213 | GMColor.deepOrange200Color(), GMColor.deepOrange300Color(),
214 | GMColor.deepOrange400Color(), GMColor.deepOrange500Color(),
215 | GMColor.deepOrange600Color(), GMColor.deepOrange700Color(),
216 | GMColor.deepOrange800Color(), GMColor.deepOrange900Color(),
217 | GMColor.deepOrangeA100Color(), GMColor.deepOrangeA200Color(),
218 | GMColor.deepOrangeA400Color(), GMColor.deepOrangeA700Color()
219 | ]
220 | }
221 |
222 | public static func brown() -> [UIColor] {
223 | return [GMColor.brown50Color(), GMColor.brown100Color(),
224 | GMColor.brown200Color(), GMColor.brown300Color(),
225 | GMColor.brown400Color(), GMColor.brown500Color(),
226 | GMColor.brown600Color(), GMColor.brown700Color(),
227 | GMColor.brown800Color(), GMColor.brown900Color()
228 | ]
229 | }
230 |
231 | public static func grey() -> [UIColor] {
232 | return [GMColor.grey50Color(), GMColor.grey100Color(),
233 | GMColor.grey200Color(), GMColor.grey300Color(),
234 | GMColor.grey400Color(), GMColor.grey500Color(),
235 | GMColor.grey600Color(), GMColor.grey700Color(),
236 | GMColor.grey800Color(), GMColor.grey900Color()
237 | ]
238 | }
239 |
240 | public static func blueGrey() -> [UIColor] {
241 | return [GMColor.blueGrey50Color(), GMColor.blueGrey100Color(),
242 | GMColor.blueGrey200Color(), GMColor.blueGrey300Color(),
243 | GMColor.blueGrey400Color(), GMColor.blueGrey500Color(),
244 | GMColor.blueGrey600Color(), GMColor.blueGrey700Color(),
245 | GMColor.blueGrey800Color(), GMColor.blueGrey900Color()
246 | ]
247 | }
248 |
249 | public static func blackAndWhite() -> [UIColor] {
250 | return [GMColor.blackColor(), GMColor.whiteColor()]
251 | }
252 | }
--------------------------------------------------------------------------------
/Example/Example.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 5E560B801D0A288100F065B5 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E560B7F1D0A288100F065B5 /* AppDelegate.swift */; };
11 | 5E560B821D0A288100F065B5 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E560B811D0A288100F065B5 /* ViewController.swift */; };
12 | 5E560B851D0A288100F065B5 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5E560B831D0A288100F065B5 /* Main.storyboard */; };
13 | 5E560B871D0A288100F065B5 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5E560B861D0A288100F065B5 /* Assets.xcassets */; };
14 | 5E560B8A1D0A288100F065B5 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5E560B881D0A288100F065B5 /* LaunchScreen.storyboard */; };
15 | 5E560B951D0A288200F065B5 /* ExampleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E560B941D0A288200F065B5 /* ExampleTests.swift */; };
16 | 5E560BAA1D0A291300F065B5 /* GMColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E560BA71D0A291300F065B5 /* GMColor.swift */; };
17 | 5E560BAB1D0A291300F065B5 /* GMPalette.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E560BA81D0A291300F065B5 /* GMPalette.swift */; };
18 | 5E560BAC1D0A291300F065B5 /* MaterialColorPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E560BA91D0A291300F065B5 /* MaterialColorPicker.swift */; };
19 | /* End PBXBuildFile section */
20 |
21 | /* Begin PBXContainerItemProxy section */
22 | 5E560B911D0A288200F065B5 /* PBXContainerItemProxy */ = {
23 | isa = PBXContainerItemProxy;
24 | containerPortal = 5E560B741D0A288000F065B5 /* Project object */;
25 | proxyType = 1;
26 | remoteGlobalIDString = 5E560B7B1D0A288000F065B5;
27 | remoteInfo = Example;
28 | };
29 | /* End PBXContainerItemProxy section */
30 |
31 | /* Begin PBXFileReference section */
32 | 5E560B7C1D0A288000F065B5 /* Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example.app; sourceTree = BUILT_PRODUCTS_DIR; };
33 | 5E560B7F1D0A288100F065B5 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
34 | 5E560B811D0A288100F065B5 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
35 | 5E560B841D0A288100F065B5 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
36 | 5E560B861D0A288100F065B5 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
37 | 5E560B891D0A288100F065B5 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
38 | 5E560B8B1D0A288100F065B5 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
39 | 5E560B901D0A288200F065B5 /* ExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
40 | 5E560B941D0A288200F065B5 /* ExampleTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExampleTests.swift; sourceTree = ""; };
41 | 5E560B961D0A288200F065B5 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
42 | 5E560BA71D0A291300F065B5 /* GMColor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GMColor.swift; sourceTree = ""; };
43 | 5E560BA81D0A291300F065B5 /* GMPalette.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GMPalette.swift; sourceTree = ""; };
44 | 5E560BA91D0A291300F065B5 /* MaterialColorPicker.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MaterialColorPicker.swift; sourceTree = ""; };
45 | /* End PBXFileReference section */
46 |
47 | /* Begin PBXFrameworksBuildPhase section */
48 | 5E560B791D0A288000F065B5 /* Frameworks */ = {
49 | isa = PBXFrameworksBuildPhase;
50 | buildActionMask = 2147483647;
51 | files = (
52 | );
53 | runOnlyForDeploymentPostprocessing = 0;
54 | };
55 | 5E560B8D1D0A288200F065B5 /* Frameworks */ = {
56 | isa = PBXFrameworksBuildPhase;
57 | buildActionMask = 2147483647;
58 | files = (
59 | );
60 | runOnlyForDeploymentPostprocessing = 0;
61 | };
62 | /* End PBXFrameworksBuildPhase section */
63 |
64 | /* Begin PBXGroup section */
65 | 5E560B731D0A288000F065B5 = {
66 | isa = PBXGroup;
67 | children = (
68 | 5E560BA61D0A291300F065B5 /* Source */,
69 | 5E560B7E1D0A288100F065B5 /* Example */,
70 | 5E560B931D0A288200F065B5 /* ExampleTests */,
71 | 5E560B7D1D0A288000F065B5 /* Products */,
72 | );
73 | sourceTree = "";
74 | };
75 | 5E560B7D1D0A288000F065B5 /* Products */ = {
76 | isa = PBXGroup;
77 | children = (
78 | 5E560B7C1D0A288000F065B5 /* Example.app */,
79 | 5E560B901D0A288200F065B5 /* ExampleTests.xctest */,
80 | );
81 | name = Products;
82 | sourceTree = "";
83 | };
84 | 5E560B7E1D0A288100F065B5 /* Example */ = {
85 | isa = PBXGroup;
86 | children = (
87 | 5E560B7F1D0A288100F065B5 /* AppDelegate.swift */,
88 | 5E560B811D0A288100F065B5 /* ViewController.swift */,
89 | 5E560B831D0A288100F065B5 /* Main.storyboard */,
90 | 5E560B861D0A288100F065B5 /* Assets.xcassets */,
91 | 5E560B881D0A288100F065B5 /* LaunchScreen.storyboard */,
92 | 5E560B8B1D0A288100F065B5 /* Info.plist */,
93 | );
94 | path = Example;
95 | sourceTree = "";
96 | };
97 | 5E560B931D0A288200F065B5 /* ExampleTests */ = {
98 | isa = PBXGroup;
99 | children = (
100 | 5E560B941D0A288200F065B5 /* ExampleTests.swift */,
101 | 5E560B961D0A288200F065B5 /* Info.plist */,
102 | );
103 | path = ExampleTests;
104 | sourceTree = "";
105 | };
106 | 5E560BA61D0A291300F065B5 /* Source */ = {
107 | isa = PBXGroup;
108 | children = (
109 | 5E560BA71D0A291300F065B5 /* GMColor.swift */,
110 | 5E560BA81D0A291300F065B5 /* GMPalette.swift */,
111 | 5E560BA91D0A291300F065B5 /* MaterialColorPicker.swift */,
112 | );
113 | name = Source;
114 | path = ../Source;
115 | sourceTree = "";
116 | };
117 | /* End PBXGroup section */
118 |
119 | /* Begin PBXNativeTarget section */
120 | 5E560B7B1D0A288000F065B5 /* Example */ = {
121 | isa = PBXNativeTarget;
122 | buildConfigurationList = 5E560B991D0A288200F065B5 /* Build configuration list for PBXNativeTarget "Example" */;
123 | buildPhases = (
124 | 5E560B781D0A288000F065B5 /* Sources */,
125 | 5E560B791D0A288000F065B5 /* Frameworks */,
126 | 5E560B7A1D0A288000F065B5 /* Resources */,
127 | );
128 | buildRules = (
129 | );
130 | dependencies = (
131 | );
132 | name = Example;
133 | productName = Example;
134 | productReference = 5E560B7C1D0A288000F065B5 /* Example.app */;
135 | productType = "com.apple.product-type.application";
136 | };
137 | 5E560B8F1D0A288200F065B5 /* ExampleTests */ = {
138 | isa = PBXNativeTarget;
139 | buildConfigurationList = 5E560B9C1D0A288200F065B5 /* Build configuration list for PBXNativeTarget "ExampleTests" */;
140 | buildPhases = (
141 | 5E560B8C1D0A288200F065B5 /* Sources */,
142 | 5E560B8D1D0A288200F065B5 /* Frameworks */,
143 | 5E560B8E1D0A288200F065B5 /* Resources */,
144 | );
145 | buildRules = (
146 | );
147 | dependencies = (
148 | 5E560B921D0A288200F065B5 /* PBXTargetDependency */,
149 | );
150 | name = ExampleTests;
151 | productName = ExampleTests;
152 | productReference = 5E560B901D0A288200F065B5 /* ExampleTests.xctest */;
153 | productType = "com.apple.product-type.bundle.unit-test";
154 | };
155 | /* End PBXNativeTarget section */
156 |
157 | /* Begin PBXProject section */
158 | 5E560B741D0A288000F065B5 /* Project object */ = {
159 | isa = PBXProject;
160 | attributes = {
161 | LastSwiftUpdateCheck = 0730;
162 | LastUpgradeCheck = 0800;
163 | ORGANIZATIONNAME = "George Kye";
164 | TargetAttributes = {
165 | 5E560B7B1D0A288000F065B5 = {
166 | CreatedOnToolsVersion = 7.3;
167 | LastSwiftMigration = 0800;
168 | };
169 | 5E560B8F1D0A288200F065B5 = {
170 | CreatedOnToolsVersion = 7.3;
171 | LastSwiftMigration = 0800;
172 | TestTargetID = 5E560B7B1D0A288000F065B5;
173 | };
174 | };
175 | };
176 | buildConfigurationList = 5E560B771D0A288000F065B5 /* Build configuration list for PBXProject "Example" */;
177 | compatibilityVersion = "Xcode 3.2";
178 | developmentRegion = English;
179 | hasScannedForEncodings = 0;
180 | knownRegions = (
181 | en,
182 | Base,
183 | );
184 | mainGroup = 5E560B731D0A288000F065B5;
185 | productRefGroup = 5E560B7D1D0A288000F065B5 /* Products */;
186 | projectDirPath = "";
187 | projectRoot = "";
188 | targets = (
189 | 5E560B7B1D0A288000F065B5 /* Example */,
190 | 5E560B8F1D0A288200F065B5 /* ExampleTests */,
191 | );
192 | };
193 | /* End PBXProject section */
194 |
195 | /* Begin PBXResourcesBuildPhase section */
196 | 5E560B7A1D0A288000F065B5 /* Resources */ = {
197 | isa = PBXResourcesBuildPhase;
198 | buildActionMask = 2147483647;
199 | files = (
200 | 5E560B8A1D0A288100F065B5 /* LaunchScreen.storyboard in Resources */,
201 | 5E560B871D0A288100F065B5 /* Assets.xcassets in Resources */,
202 | 5E560B851D0A288100F065B5 /* Main.storyboard in Resources */,
203 | );
204 | runOnlyForDeploymentPostprocessing = 0;
205 | };
206 | 5E560B8E1D0A288200F065B5 /* Resources */ = {
207 | isa = PBXResourcesBuildPhase;
208 | buildActionMask = 2147483647;
209 | files = (
210 | );
211 | runOnlyForDeploymentPostprocessing = 0;
212 | };
213 | /* End PBXResourcesBuildPhase section */
214 |
215 | /* Begin PBXSourcesBuildPhase section */
216 | 5E560B781D0A288000F065B5 /* Sources */ = {
217 | isa = PBXSourcesBuildPhase;
218 | buildActionMask = 2147483647;
219 | files = (
220 | 5E560BAC1D0A291300F065B5 /* MaterialColorPicker.swift in Sources */,
221 | 5E560B821D0A288100F065B5 /* ViewController.swift in Sources */,
222 | 5E560BAB1D0A291300F065B5 /* GMPalette.swift in Sources */,
223 | 5E560B801D0A288100F065B5 /* AppDelegate.swift in Sources */,
224 | 5E560BAA1D0A291300F065B5 /* GMColor.swift in Sources */,
225 | );
226 | runOnlyForDeploymentPostprocessing = 0;
227 | };
228 | 5E560B8C1D0A288200F065B5 /* Sources */ = {
229 | isa = PBXSourcesBuildPhase;
230 | buildActionMask = 2147483647;
231 | files = (
232 | 5E560B951D0A288200F065B5 /* ExampleTests.swift in Sources */,
233 | );
234 | runOnlyForDeploymentPostprocessing = 0;
235 | };
236 | /* End PBXSourcesBuildPhase section */
237 |
238 | /* Begin PBXTargetDependency section */
239 | 5E560B921D0A288200F065B5 /* PBXTargetDependency */ = {
240 | isa = PBXTargetDependency;
241 | target = 5E560B7B1D0A288000F065B5 /* Example */;
242 | targetProxy = 5E560B911D0A288200F065B5 /* PBXContainerItemProxy */;
243 | };
244 | /* End PBXTargetDependency section */
245 |
246 | /* Begin PBXVariantGroup section */
247 | 5E560B831D0A288100F065B5 /* Main.storyboard */ = {
248 | isa = PBXVariantGroup;
249 | children = (
250 | 5E560B841D0A288100F065B5 /* Base */,
251 | );
252 | name = Main.storyboard;
253 | sourceTree = "";
254 | };
255 | 5E560B881D0A288100F065B5 /* LaunchScreen.storyboard */ = {
256 | isa = PBXVariantGroup;
257 | children = (
258 | 5E560B891D0A288100F065B5 /* Base */,
259 | );
260 | name = LaunchScreen.storyboard;
261 | sourceTree = "";
262 | };
263 | /* End PBXVariantGroup section */
264 |
265 | /* Begin XCBuildConfiguration section */
266 | 5E560B971D0A288200F065B5 /* Debug */ = {
267 | isa = XCBuildConfiguration;
268 | buildSettings = {
269 | ALWAYS_SEARCH_USER_PATHS = NO;
270 | CLANG_ANALYZER_NONNULL = YES;
271 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
272 | CLANG_CXX_LIBRARY = "libc++";
273 | CLANG_ENABLE_MODULES = YES;
274 | CLANG_ENABLE_OBJC_ARC = YES;
275 | CLANG_WARN_BOOL_CONVERSION = YES;
276 | CLANG_WARN_CONSTANT_CONVERSION = YES;
277 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
278 | CLANG_WARN_EMPTY_BODY = YES;
279 | CLANG_WARN_ENUM_CONVERSION = YES;
280 | CLANG_WARN_INFINITE_RECURSION = YES;
281 | CLANG_WARN_INT_CONVERSION = YES;
282 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
283 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
284 | CLANG_WARN_UNREACHABLE_CODE = YES;
285 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
286 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
287 | COPY_PHASE_STRIP = NO;
288 | DEBUG_INFORMATION_FORMAT = dwarf;
289 | ENABLE_STRICT_OBJC_MSGSEND = YES;
290 | ENABLE_TESTABILITY = YES;
291 | GCC_C_LANGUAGE_STANDARD = gnu99;
292 | GCC_DYNAMIC_NO_PIC = NO;
293 | GCC_NO_COMMON_BLOCKS = YES;
294 | GCC_OPTIMIZATION_LEVEL = 0;
295 | GCC_PREPROCESSOR_DEFINITIONS = (
296 | "DEBUG=1",
297 | "$(inherited)",
298 | );
299 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
300 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
301 | GCC_WARN_UNDECLARED_SELECTOR = YES;
302 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
303 | GCC_WARN_UNUSED_FUNCTION = YES;
304 | GCC_WARN_UNUSED_VARIABLE = YES;
305 | IPHONEOS_DEPLOYMENT_TARGET = 9.3;
306 | MTL_ENABLE_DEBUG_INFO = YES;
307 | ONLY_ACTIVE_ARCH = YES;
308 | SDKROOT = iphoneos;
309 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
310 | };
311 | name = Debug;
312 | };
313 | 5E560B981D0A288200F065B5 /* Release */ = {
314 | isa = XCBuildConfiguration;
315 | buildSettings = {
316 | ALWAYS_SEARCH_USER_PATHS = NO;
317 | CLANG_ANALYZER_NONNULL = YES;
318 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
319 | CLANG_CXX_LIBRARY = "libc++";
320 | CLANG_ENABLE_MODULES = YES;
321 | CLANG_ENABLE_OBJC_ARC = YES;
322 | CLANG_WARN_BOOL_CONVERSION = YES;
323 | CLANG_WARN_CONSTANT_CONVERSION = YES;
324 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
325 | CLANG_WARN_EMPTY_BODY = YES;
326 | CLANG_WARN_ENUM_CONVERSION = YES;
327 | CLANG_WARN_INFINITE_RECURSION = YES;
328 | CLANG_WARN_INT_CONVERSION = YES;
329 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
330 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
331 | CLANG_WARN_UNREACHABLE_CODE = YES;
332 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
333 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
334 | COPY_PHASE_STRIP = NO;
335 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
336 | ENABLE_NS_ASSERTIONS = NO;
337 | ENABLE_STRICT_OBJC_MSGSEND = YES;
338 | GCC_C_LANGUAGE_STANDARD = gnu99;
339 | GCC_NO_COMMON_BLOCKS = YES;
340 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
341 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
342 | GCC_WARN_UNDECLARED_SELECTOR = YES;
343 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
344 | GCC_WARN_UNUSED_FUNCTION = YES;
345 | GCC_WARN_UNUSED_VARIABLE = YES;
346 | IPHONEOS_DEPLOYMENT_TARGET = 9.3;
347 | MTL_ENABLE_DEBUG_INFO = NO;
348 | SDKROOT = iphoneos;
349 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
350 | VALIDATE_PRODUCT = YES;
351 | };
352 | name = Release;
353 | };
354 | 5E560B9A1D0A288200F065B5 /* Debug */ = {
355 | isa = XCBuildConfiguration;
356 | buildSettings = {
357 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
358 | INFOPLIST_FILE = Example/Info.plist;
359 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
360 | PRODUCT_BUNDLE_IDENTIFIER = GeorgeKye.Example;
361 | PRODUCT_NAME = "$(TARGET_NAME)";
362 | SWIFT_VERSION = 3.0;
363 | };
364 | name = Debug;
365 | };
366 | 5E560B9B1D0A288200F065B5 /* Release */ = {
367 | isa = XCBuildConfiguration;
368 | buildSettings = {
369 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
370 | INFOPLIST_FILE = Example/Info.plist;
371 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
372 | PRODUCT_BUNDLE_IDENTIFIER = GeorgeKye.Example;
373 | PRODUCT_NAME = "$(TARGET_NAME)";
374 | SWIFT_VERSION = 3.0;
375 | };
376 | name = Release;
377 | };
378 | 5E560B9D1D0A288200F065B5 /* Debug */ = {
379 | isa = XCBuildConfiguration;
380 | buildSettings = {
381 | BUNDLE_LOADER = "$(TEST_HOST)";
382 | INFOPLIST_FILE = ExampleTests/Info.plist;
383 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
384 | PRODUCT_BUNDLE_IDENTIFIER = GeorgeKye.ExampleTests;
385 | PRODUCT_NAME = "$(TARGET_NAME)";
386 | SWIFT_VERSION = 3.0;
387 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example.app/Example";
388 | };
389 | name = Debug;
390 | };
391 | 5E560B9E1D0A288200F065B5 /* Release */ = {
392 | isa = XCBuildConfiguration;
393 | buildSettings = {
394 | BUNDLE_LOADER = "$(TEST_HOST)";
395 | INFOPLIST_FILE = ExampleTests/Info.plist;
396 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
397 | PRODUCT_BUNDLE_IDENTIFIER = GeorgeKye.ExampleTests;
398 | PRODUCT_NAME = "$(TARGET_NAME)";
399 | SWIFT_VERSION = 3.0;
400 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example.app/Example";
401 | };
402 | name = Release;
403 | };
404 | /* End XCBuildConfiguration section */
405 |
406 | /* Begin XCConfigurationList section */
407 | 5E560B771D0A288000F065B5 /* Build configuration list for PBXProject "Example" */ = {
408 | isa = XCConfigurationList;
409 | buildConfigurations = (
410 | 5E560B971D0A288200F065B5 /* Debug */,
411 | 5E560B981D0A288200F065B5 /* Release */,
412 | );
413 | defaultConfigurationIsVisible = 0;
414 | defaultConfigurationName = Release;
415 | };
416 | 5E560B991D0A288200F065B5 /* Build configuration list for PBXNativeTarget "Example" */ = {
417 | isa = XCConfigurationList;
418 | buildConfigurations = (
419 | 5E560B9A1D0A288200F065B5 /* Debug */,
420 | 5E560B9B1D0A288200F065B5 /* Release */,
421 | );
422 | defaultConfigurationIsVisible = 0;
423 | defaultConfigurationName = Release;
424 | };
425 | 5E560B9C1D0A288200F065B5 /* Build configuration list for PBXNativeTarget "ExampleTests" */ = {
426 | isa = XCConfigurationList;
427 | buildConfigurations = (
428 | 5E560B9D1D0A288200F065B5 /* Debug */,
429 | 5E560B9E1D0A288200F065B5 /* Release */,
430 | );
431 | defaultConfigurationIsVisible = 0;
432 | defaultConfigurationName = Release;
433 | };
434 | /* End XCConfigurationList section */
435 | };
436 | rootObject = 5E560B741D0A288000F065B5 /* Project object */;
437 | }
438 |
--------------------------------------------------------------------------------
/Source/GMColor.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GMColor.swift
3 | // GMColor
4 | //
5 | // Created by Todsaporn Banjerdkit (katopz) on 12/19/14.
6 | // Copyright (c) 2014 Debokeh. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | extension UIColor {
12 | convenience init(rgb: UInt, a:CGFloat) {
13 | self.init(
14 | red: CGFloat((rgb & 0xFF0000) >> 16) / 255.0,
15 | green: CGFloat((rgb & 0x00FF00) >> 8) / 255.0,
16 | blue: CGFloat(rgb & 0x0000FF) / 255.0,
17 | alpha: a
18 | )
19 | }
20 |
21 | convenience init(rgb: UInt) {
22 | self.init(rgb: rgb, a:1.0)
23 | }
24 | }
25 |
26 | public struct GMColor {
27 |
28 | // MARK: - red
29 |
30 | public static func red50Color() -> UIColor {
31 | return UIColor(rgb: 0xffebee)
32 | }
33 |
34 | public static func red100Color() -> UIColor {
35 | return UIColor(rgb: 0xffcdd2)
36 | }
37 |
38 | public static func red200Color() -> UIColor {
39 | return UIColor(rgb: 0xef9a9a)
40 | }
41 |
42 | public static func red300Color() -> UIColor {
43 | return UIColor(rgb: 0xe57373)
44 | }
45 |
46 | public static func red400Color() -> UIColor {
47 | return UIColor(rgb: 0xef5350)
48 | }
49 |
50 | public static func red500Color() -> UIColor {
51 | return UIColor(rgb: 0xf44336)
52 | }
53 |
54 | public static func red600Color() -> UIColor {
55 | return UIColor(rgb: 0xe53935)
56 | }
57 |
58 | public static func red700Color() -> UIColor {
59 | return UIColor(rgb: 0xd32f2f)
60 | }
61 |
62 | public static func red800Color() -> UIColor {
63 | return UIColor(rgb: 0xc62828)
64 | }
65 |
66 | public static func red900Color() -> UIColor {
67 | return UIColor(rgb: 0xb71c1c)
68 | }
69 |
70 | public static func redA100Color() -> UIColor {
71 | return UIColor(rgb: 0xff8a80)
72 | }
73 |
74 | public static func redA200Color() -> UIColor {
75 | return UIColor(rgb: 0xff5252)
76 | }
77 |
78 | public static func redA400Color() -> UIColor {
79 | return UIColor(rgb: 0xff1744)
80 | }
81 |
82 | public static func redA700Color() -> UIColor {
83 | return UIColor(rgb: 0xd50000)
84 | }
85 |
86 | // MARK: - pink
87 |
88 | public static func pink50Color() -> UIColor {
89 | return UIColor(rgb: 0xfce4ec)
90 | }
91 |
92 | public static func pink100Color() -> UIColor {
93 | return UIColor(rgb: 0xf8bbd0)
94 | }
95 |
96 | public static func pink200Color() -> UIColor {
97 | return UIColor(rgb: 0xf48fb1)
98 | }
99 |
100 | public static func pink300Color() -> UIColor {
101 | return UIColor(rgb: 0xf06292)
102 | }
103 |
104 | public static func pink400Color() -> UIColor {
105 | return UIColor(rgb: 0xec407a)
106 | }
107 |
108 | public static func pink500Color() -> UIColor {
109 | return UIColor(rgb: 0xe91e63)
110 | }
111 |
112 | public static func pink600Color() -> UIColor {
113 | return UIColor(rgb: 0xd81b60)
114 | }
115 |
116 | public static func pink700Color() -> UIColor {
117 | return UIColor(rgb: 0xc2185b)
118 | }
119 |
120 | public static func pink800Color() -> UIColor {
121 | return UIColor(rgb: 0xad1457)
122 | }
123 |
124 | public static func pink900Color() -> UIColor {
125 | return UIColor(rgb: 0x880e4f)
126 | }
127 |
128 | public static func pinkA100Color() -> UIColor {
129 | return UIColor(rgb: 0xff80ab)
130 | }
131 |
132 | public static func pinkA200Color() -> UIColor {
133 | return UIColor(rgb: 0xff4081)
134 | }
135 |
136 | public static func pinkA400Color() -> UIColor {
137 | return UIColor(rgb: 0xf50057)
138 | }
139 |
140 | public static func pinkA700Color() -> UIColor {
141 | return UIColor(rgb: 0xc51162)
142 | }
143 |
144 | // MARK: - purple
145 |
146 | public static func purple50Color() -> UIColor {
147 | return UIColor(rgb: 0xf3e5f5)
148 | }
149 |
150 | public static func purple100Color() -> UIColor {
151 | return UIColor(rgb: 0xe1bee7)
152 | }
153 |
154 | public static func purple200Color() -> UIColor {
155 | return UIColor(rgb: 0xce93d8)
156 | }
157 |
158 | public static func purple300Color() -> UIColor {
159 | return UIColor(rgb: 0xba68c8)
160 | }
161 |
162 | public static func purple400Color() -> UIColor {
163 | return UIColor(rgb: 0xab47bc)
164 | }
165 |
166 | public static func purple500Color() -> UIColor {
167 | return UIColor(rgb: 0x9c27b0)
168 | }
169 |
170 | public static func purple600Color() -> UIColor {
171 | return UIColor(rgb: 0x8e24aa)
172 | }
173 |
174 | public static func purple700Color() -> UIColor {
175 | return UIColor(rgb: 0x7b1fa2)
176 | }
177 |
178 | public static func purple800Color() -> UIColor {
179 | return UIColor(rgb: 0x6a1b9a)
180 | }
181 |
182 | public static func purple900Color() -> UIColor {
183 | return UIColor(rgb: 0x4a148c)
184 | }
185 |
186 | public static func purpleA100Color() -> UIColor {
187 | return UIColor(rgb: 0xea80fc)
188 | }
189 |
190 | public static func purpleA200Color() -> UIColor {
191 | return UIColor(rgb: 0xe040fb)
192 | }
193 |
194 | public static func purpleA400Color() -> UIColor {
195 | return UIColor(rgb: 0xd500f9)
196 | }
197 |
198 | public static func purpleA700Color() -> UIColor {
199 | return UIColor(rgb: 0xaa00ff)
200 | }
201 |
202 | // MARK: - deep-purple
203 |
204 | public static func deepPurple50Color() -> UIColor {
205 | return UIColor(rgb: 0xede7f6)
206 | }
207 |
208 | public static func deepPurple100Color() -> UIColor {
209 | return UIColor(rgb: 0xd1c4e9)
210 | }
211 |
212 | public static func deepPurple200Color() -> UIColor {
213 | return UIColor(rgb: 0xb39ddb)
214 | }
215 |
216 | public static func deepPurple300Color() -> UIColor {
217 | return UIColor(rgb: 0x9575cd)
218 | }
219 |
220 | public static func deepPurple400Color() -> UIColor {
221 | return UIColor(rgb: 0x7e57c2)
222 | }
223 |
224 | public static func deepPurple500Color() -> UIColor {
225 | return UIColor(rgb: 0x673ab7)
226 | }
227 |
228 | public static func deepPurple600Color() -> UIColor {
229 | return UIColor(rgb: 0x5e35b1)
230 | }
231 |
232 | public static func deepPurple700Color() -> UIColor {
233 | return UIColor(rgb: 0x512da8)
234 | }
235 |
236 | public static func deepPurple800Color() -> UIColor {
237 | return UIColor(rgb: 0x4527a0)
238 | }
239 |
240 | public static func deepPurple900Color() -> UIColor {
241 | return UIColor(rgb: 0x311b92)
242 | }
243 |
244 | public static func deepPurpleA100Color() -> UIColor {
245 | return UIColor(rgb: 0xb388ff)
246 | }
247 |
248 | public static func deepPurpleA200Color() -> UIColor {
249 | return UIColor(rgb: 0x7c4dff)
250 | }
251 |
252 | public static func deepPurpleA400Color() -> UIColor {
253 | return UIColor(rgb: 0x651fff)
254 | }
255 |
256 | public static func deepPurpleA700Color() -> UIColor {
257 | return UIColor(rgb: 0x6200ea)
258 | }
259 |
260 | // MARK: - indigo
261 |
262 | public static func indigo50Color() -> UIColor {
263 | return UIColor(rgb: 0xe8eaf6)
264 | }
265 |
266 | public static func indigo100Color() -> UIColor {
267 | return UIColor(rgb: 0xc5cae9)
268 | }
269 |
270 | public static func indigo200Color() -> UIColor {
271 | return UIColor(rgb: 0x9fa8da)
272 | }
273 |
274 | public static func indigo300Color() -> UIColor {
275 | return UIColor(rgb: 0x7986cb)
276 | }
277 |
278 | public static func indigo400Color() -> UIColor {
279 | return UIColor(rgb: 0x5c6bc0)
280 | }
281 |
282 | public static func indigo500Color() -> UIColor {
283 | return UIColor(rgb: 0x3f51b5)
284 | }
285 |
286 | public static func indigo600Color() -> UIColor {
287 | return UIColor(rgb: 0x3949ab)
288 | }
289 |
290 | public static func indigo700Color() -> UIColor {
291 | return UIColor(rgb: 0x303f9f)
292 | }
293 |
294 | public static func indigo800Color() -> UIColor {
295 | return UIColor(rgb: 0x283593)
296 | }
297 |
298 | public static func indigo900Color() -> UIColor {
299 | return UIColor(rgb: 0x1a237e)
300 | }
301 |
302 | public static func indigoA100Color() -> UIColor {
303 | return UIColor(rgb: 0x8c9eff)
304 | }
305 |
306 | public static func indigoA200Color() -> UIColor {
307 | return UIColor(rgb: 0x536dfe)
308 | }
309 |
310 | public static func indigoA400Color() -> UIColor {
311 | return UIColor(rgb: 0x3d5afe)
312 | }
313 |
314 | public static func indigoA700Color() -> UIColor {
315 | return UIColor(rgb: 0x304ffe)
316 | }
317 |
318 | // MARK: - blue
319 |
320 | public static func blue50Color() -> UIColor {
321 | return UIColor(rgb: 0xe3f2fd)
322 | }
323 |
324 | public static func blue100Color() -> UIColor {
325 | return UIColor(rgb: 0xbbdefb)
326 | }
327 |
328 | public static func blue200Color() -> UIColor {
329 | return UIColor(rgb: 0x90caf9)
330 | }
331 |
332 | public static func blue300Color() -> UIColor {
333 | return UIColor(rgb: 0x64b5f6)
334 | }
335 |
336 | public static func blue400Color() -> UIColor {
337 | return UIColor(rgb: 0x42a5f5)
338 | }
339 |
340 | public static func blue500Color() -> UIColor {
341 | return UIColor(rgb: 0x2196f3)
342 | }
343 |
344 | public static func blue600Color() -> UIColor {
345 | return UIColor(rgb: 0x1e88e5)
346 | }
347 |
348 | public static func blue700Color() -> UIColor {
349 | return UIColor(rgb: 0x1976d2)
350 | }
351 |
352 | public static func blue800Color() -> UIColor {
353 | return UIColor(rgb: 0x1565c0)
354 | }
355 |
356 | public static func blue900Color() -> UIColor {
357 | return UIColor(rgb: 0x0d47a1)
358 | }
359 |
360 | public static func blueA100Color() -> UIColor {
361 | return UIColor(rgb: 0x82b1ff)
362 | }
363 |
364 | public static func blueA200Color() -> UIColor {
365 | return UIColor(rgb: 0x448aff)
366 | }
367 |
368 | public static func blueA400Color() -> UIColor {
369 | return UIColor(rgb: 0x2979ff)
370 | }
371 |
372 | public static func blueA700Color() -> UIColor {
373 | return UIColor(rgb: 0x2962ff)
374 | }
375 |
376 | // MARK: - light-blue
377 |
378 | public static func lightBlue50Color() -> UIColor {
379 | return UIColor(rgb: 0xe1f5fe)
380 | }
381 |
382 | public static func lightBlue100Color() -> UIColor {
383 | return UIColor(rgb: 0xb3e5fc)
384 | }
385 |
386 | public static func lightBlue200Color() -> UIColor {
387 | return UIColor(rgb: 0x81d4fa)
388 | }
389 |
390 | public static func lightBlue300Color() -> UIColor {
391 | return UIColor(rgb: 0x4fc3f7)
392 | }
393 |
394 | public static func lightBlue400Color() -> UIColor {
395 | return UIColor(rgb: 0x29b6f6)
396 | }
397 |
398 | public static func lightBlue500Color() -> UIColor {
399 | return UIColor(rgb: 0x03a9f4)
400 | }
401 |
402 | public static func lightBlue600Color() -> UIColor {
403 | return UIColor(rgb: 0x039be5)
404 | }
405 |
406 | public static func lightBlue700Color() -> UIColor {
407 | return UIColor(rgb: 0x0288d1)
408 | }
409 |
410 | public static func lightBlue800Color() -> UIColor {
411 | return UIColor(rgb: 0x0277bd)
412 | }
413 |
414 | public static func lightBlue900Color() -> UIColor {
415 | return UIColor(rgb: 0x01579b)
416 | }
417 |
418 | public static func lightBlueA100Color() -> UIColor {
419 | return UIColor(rgb: 0x80d8ff)
420 | }
421 |
422 | public static func lightBlueA200Color() -> UIColor {
423 | return UIColor(rgb: 0x40c4ff)
424 | }
425 |
426 | public static func lightBlueA400Color() -> UIColor {
427 | return UIColor(rgb: 0x00b0ff)
428 | }
429 |
430 | public static func lightBlueA700Color() -> UIColor {
431 | return UIColor(rgb: 0x0091ea)
432 | }
433 |
434 | // MARK: - cyan
435 |
436 | public static func cyan50Color() -> UIColor {
437 | return UIColor(rgb: 0xe0f7fa)
438 | }
439 |
440 | public static func cyan100Color() -> UIColor {
441 | return UIColor(rgb: 0xb2ebf2)
442 | }
443 |
444 | public static func cyan200Color() -> UIColor {
445 | return UIColor(rgb: 0x80deea)
446 | }
447 |
448 | public static func cyan300Color() -> UIColor {
449 | return UIColor(rgb: 0x4dd0e1)
450 | }
451 |
452 | public static func cyan400Color() -> UIColor {
453 | return UIColor(rgb: 0x26c6da)
454 | }
455 |
456 | public static func cyan500Color() -> UIColor {
457 | return UIColor(rgb: 0x00bcd4)
458 | }
459 |
460 | public static func cyan600Color() -> UIColor {
461 | return UIColor(rgb: 0x00acc1)
462 | }
463 |
464 | public static func cyan700Color() -> UIColor {
465 | return UIColor(rgb: 0x0097a7)
466 | }
467 |
468 | public static func cyan800Color() -> UIColor {
469 | return UIColor(rgb: 0x00838f)
470 | }
471 |
472 | public static func cyan900Color() -> UIColor {
473 | return UIColor(rgb: 0x006064)
474 | }
475 |
476 | public static func cyanA100Color() -> UIColor {
477 | return UIColor(rgb: 0x84ffff)
478 | }
479 |
480 | public static func cyanA200Color() -> UIColor {
481 | return UIColor(rgb: 0x18ffff)
482 | }
483 |
484 | public static func cyanA400Color() -> UIColor {
485 | return UIColor(rgb: 0x00e5ff)
486 | }
487 |
488 | public static func cyanA700Color() -> UIColor {
489 | return UIColor(rgb: 0x00b8d4)
490 | }
491 |
492 | // MARK: - teal
493 |
494 | public static func teal50Color() -> UIColor {
495 | return UIColor(rgb: 0xe0f2f1)
496 | }
497 |
498 | public static func teal100Color() -> UIColor {
499 | return UIColor(rgb: 0xb2dfdb)
500 | }
501 |
502 | public static func teal200Color() -> UIColor {
503 | return UIColor(rgb: 0x80cbc4)
504 | }
505 |
506 | public static func teal300Color() -> UIColor {
507 | return UIColor(rgb: 0x4db6ac)
508 | }
509 |
510 | public static func teal400Color() -> UIColor {
511 | return UIColor(rgb: 0x26a69a)
512 | }
513 |
514 | public static func teal500Color() -> UIColor {
515 | return UIColor(rgb: 0x009688)
516 | }
517 |
518 | public static func teal600Color() -> UIColor {
519 | return UIColor(rgb: 0x00897b)
520 | }
521 |
522 | public static func teal700Color() -> UIColor {
523 | return UIColor(rgb: 0x00796b)
524 | }
525 |
526 | public static func teal800Color() -> UIColor {
527 | return UIColor(rgb: 0x00695c)
528 | }
529 |
530 | public static func teal900Color() -> UIColor {
531 | return UIColor(rgb: 0x004d40)
532 | }
533 |
534 | public static func tealA100Color() -> UIColor {
535 | return UIColor(rgb: 0xa7ffeb)
536 | }
537 |
538 | public static func tealA200Color() -> UIColor {
539 | return UIColor(rgb: 0x64ffda)
540 | }
541 |
542 | public static func tealA400Color() -> UIColor {
543 | return UIColor(rgb: 0x1de9b6)
544 | }
545 |
546 | public static func tealA700Color() -> UIColor {
547 | return UIColor(rgb: 0x00bfa5)
548 | }
549 |
550 | // MARK: - green
551 |
552 | public static func green50Color() -> UIColor {
553 | return UIColor(rgb: 0xe8f5e9)
554 | }
555 |
556 | public static func green100Color() -> UIColor {
557 | return UIColor(rgb: 0xc8e6c9)
558 | }
559 |
560 | public static func green200Color() -> UIColor {
561 | return UIColor(rgb: 0xa5d6a7)
562 | }
563 |
564 | public static func green300Color() -> UIColor {
565 | return UIColor(rgb: 0x81c784)
566 | }
567 |
568 | public static func green400Color() -> UIColor {
569 | return UIColor(rgb: 0x66bb6a)
570 | }
571 |
572 | public static func green500Color() -> UIColor {
573 | return UIColor(rgb: 0x4caf50)
574 | }
575 |
576 | public static func green600Color() -> UIColor {
577 | return UIColor(rgb: 0x43a047)
578 | }
579 |
580 | public static func green700Color() -> UIColor {
581 | return UIColor(rgb: 0x388e3c)
582 | }
583 |
584 | public static func green800Color() -> UIColor {
585 | return UIColor(rgb: 0x2e7d32)
586 | }
587 |
588 | public static func green900Color() -> UIColor {
589 | return UIColor(rgb: 0x1b5e20)
590 | }
591 |
592 | public static func greenA100Color() -> UIColor {
593 | return UIColor(rgb: 0xb9f6ca)
594 | }
595 |
596 | public static func greenA200Color() -> UIColor {
597 | return UIColor(rgb: 0x69f0ae)
598 | }
599 |
600 | public static func greenA400Color() -> UIColor {
601 | return UIColor(rgb: 0x00e676)
602 | }
603 |
604 | public static func greenA700Color() -> UIColor {
605 | return UIColor(rgb: 0x00c853)
606 | }
607 |
608 | // MARK: - light-green
609 |
610 | public static func lightGreen50Color() -> UIColor {
611 | return UIColor(rgb: 0xf1f8e9)
612 | }
613 |
614 | public static func lightGreen100Color() -> UIColor {
615 | return UIColor(rgb: 0xdcedc8)
616 | }
617 |
618 | public static func lightGreen200Color() -> UIColor {
619 | return UIColor(rgb: 0xc5e1a5)
620 | }
621 |
622 | public static func lightGreen300Color() -> UIColor {
623 | return UIColor(rgb: 0xaed581)
624 | }
625 |
626 | public static func lightGreen400Color() -> UIColor {
627 | return UIColor(rgb: 0x9ccc65)
628 | }
629 |
630 | public static func lightGreen500Color() -> UIColor {
631 | return UIColor(rgb: 0x8bc34a)
632 | }
633 |
634 | public static func lightGreen600Color() -> UIColor {
635 | return UIColor(rgb: 0x7cb342)
636 | }
637 |
638 | public static func lightGreen700Color() -> UIColor {
639 | return UIColor(rgb: 0x689f38)
640 | }
641 |
642 | public static func lightGreen800Color() -> UIColor {
643 | return UIColor(rgb: 0x558b2f)
644 | }
645 |
646 | public static func lightGreen900Color() -> UIColor {
647 | return UIColor(rgb: 0x33691e)
648 | }
649 |
650 | public static func lightGreenA100Color() -> UIColor {
651 | return UIColor(rgb: 0xccff90)
652 | }
653 |
654 | public static func lightGreenA200Color() -> UIColor {
655 | return UIColor(rgb: 0xb2ff59)
656 | }
657 |
658 | public static func lightGreenA400Color() -> UIColor {
659 | return UIColor(rgb: 0x76ff03)
660 | }
661 |
662 | public static func lightGreenA700Color() -> UIColor {
663 | return UIColor(rgb: 0x64dd17)
664 | }
665 |
666 | // MARK: - lime
667 |
668 | public static func lime50Color() -> UIColor {
669 | return UIColor(rgb: 0xf9fbe7)
670 | }
671 |
672 | public static func lime100Color() -> UIColor {
673 | return UIColor(rgb: 0xf0f4c3)
674 | }
675 |
676 | public static func lime200Color() -> UIColor {
677 | return UIColor(rgb: 0xe6ee9c)
678 | }
679 |
680 | public static func lime300Color() -> UIColor {
681 | return UIColor(rgb: 0xdce775)
682 | }
683 |
684 | public static func lime400Color() -> UIColor {
685 | return UIColor(rgb: 0xd4e157)
686 | }
687 |
688 | public static func lime500Color() -> UIColor {
689 | return UIColor(rgb: 0xcddc39)
690 | }
691 |
692 | public static func lime600Color() -> UIColor {
693 | return UIColor(rgb: 0xc0ca33)
694 | }
695 |
696 | public static func lime700Color() -> UIColor {
697 | return UIColor(rgb: 0xafb42b)
698 | }
699 |
700 | public static func lime800Color() -> UIColor {
701 | return UIColor(rgb: 0x9e9d24)
702 | }
703 |
704 | public static func lime900Color() -> UIColor {
705 | return UIColor(rgb: 0x827717)
706 | }
707 |
708 | public static func limeA100Color() -> UIColor {
709 | return UIColor(rgb: 0xf4ff81)
710 | }
711 |
712 | public static func limeA200Color() -> UIColor {
713 | return UIColor(rgb: 0xeeff41)
714 | }
715 |
716 | public static func limeA400Color() -> UIColor {
717 | return UIColor(rgb: 0xc6ff00)
718 | }
719 |
720 | public static func limeA700Color() -> UIColor {
721 | return UIColor(rgb: 0xaeea00)
722 | }
723 |
724 | // MARK: - yellow
725 |
726 | public static func yellow50Color() -> UIColor {
727 | return UIColor(rgb: 0xfffde7)
728 | }
729 |
730 | public static func yellow100Color() -> UIColor {
731 | return UIColor(rgb: 0xfff9c4)
732 | }
733 |
734 | public static func yellow200Color() -> UIColor {
735 | return UIColor(rgb: 0xfff59d)
736 | }
737 |
738 | public static func yellow300Color() -> UIColor {
739 | return UIColor(rgb: 0xfff176)
740 | }
741 |
742 | public static func yellow400Color() -> UIColor {
743 | return UIColor(rgb: 0xffee58)
744 | }
745 |
746 | public static func yellow500Color() -> UIColor {
747 | return UIColor(rgb: 0xffeb3b)
748 | }
749 |
750 | public static func yellow600Color() -> UIColor {
751 | return UIColor(rgb: 0xfdd835)
752 | }
753 |
754 | public static func yellow700Color() -> UIColor {
755 | return UIColor(rgb: 0xfbc02d)
756 | }
757 |
758 | public static func yellow800Color() -> UIColor {
759 | return UIColor(rgb: 0xf9a825)
760 | }
761 |
762 | public static func yellow900Color() -> UIColor {
763 | return UIColor(rgb: 0xf57f17)
764 | }
765 |
766 | public static func yellowA100Color() -> UIColor {
767 | return UIColor(rgb: 0xffff8d)
768 | }
769 |
770 | public static func yellowA200Color() -> UIColor {
771 | return UIColor(rgb: 0xffff00)
772 | }
773 |
774 | public static func yellowA400Color() -> UIColor {
775 | return UIColor(rgb: 0xffea00)
776 | }
777 |
778 | public static func yellowA700Color() -> UIColor {
779 | return UIColor(rgb: 0xffd600)
780 | }
781 |
782 | // MARK: - amber
783 |
784 | public static func amber50Color() -> UIColor {
785 | return UIColor(rgb: 0xfff8e1)
786 | }
787 |
788 | public static func amber100Color() -> UIColor {
789 | return UIColor(rgb: 0xffecb3)
790 | }
791 |
792 | public static func amber200Color() -> UIColor {
793 | return UIColor(rgb: 0xffe082)
794 | }
795 |
796 | public static func amber300Color() -> UIColor {
797 | return UIColor(rgb: 0xffd54f)
798 | }
799 |
800 | public static func amber400Color() -> UIColor {
801 | return UIColor(rgb: 0xffca28)
802 | }
803 |
804 | public static func amber500Color() -> UIColor {
805 | return UIColor(rgb: 0xffc107)
806 | }
807 |
808 | public static func amber600Color() -> UIColor {
809 | return UIColor(rgb: 0xffb300)
810 | }
811 |
812 | public static func amber700Color() -> UIColor {
813 | return UIColor(rgb: 0xffa000)
814 | }
815 |
816 | public static func amber800Color() -> UIColor {
817 | return UIColor(rgb: 0xff8f00)
818 | }
819 |
820 | public static func amber900Color() -> UIColor {
821 | return UIColor(rgb: 0xff6f00)
822 | }
823 |
824 | public static func amberA100Color() -> UIColor {
825 | return UIColor(rgb: 0xffe57f)
826 | }
827 |
828 | public static func amberA200Color() -> UIColor {
829 | return UIColor(rgb: 0xffd740)
830 | }
831 |
832 | public static func amberA400Color() -> UIColor {
833 | return UIColor(rgb: 0xffc400)
834 | }
835 |
836 | public static func amberA700Color() -> UIColor {
837 | return UIColor(rgb: 0xffab00)
838 | }
839 |
840 | // MARK: - orange
841 |
842 | public static func orange50Color() -> UIColor {
843 | return UIColor(rgb: 0xfff3e0)
844 | }
845 |
846 | public static func orange100Color() -> UIColor {
847 | return UIColor(rgb: 0xffe0b2)
848 | }
849 |
850 | public static func orange200Color() -> UIColor {
851 | return UIColor(rgb: 0xffcc80)
852 | }
853 |
854 | public static func orange300Color() -> UIColor {
855 | return UIColor(rgb: 0xffb74d)
856 | }
857 |
858 | public static func orange400Color() -> UIColor {
859 | return UIColor(rgb: 0xffa726)
860 | }
861 |
862 | public static func orange500Color() -> UIColor {
863 | return UIColor(rgb: 0xff9800)
864 | }
865 |
866 | public static func orange600Color() -> UIColor {
867 | return UIColor(rgb: 0xfb8c00)
868 | }
869 |
870 | public static func orange700Color() -> UIColor {
871 | return UIColor(rgb: 0xf57c00)
872 | }
873 |
874 | public static func orange800Color() -> UIColor {
875 | return UIColor(rgb: 0xef6c00)
876 | }
877 |
878 | public static func orange900Color() -> UIColor {
879 | return UIColor(rgb: 0xe65100)
880 | }
881 |
882 | public static func orangeA100Color() -> UIColor {
883 | return UIColor(rgb: 0xffd180)
884 | }
885 |
886 | public static func orangeA200Color() -> UIColor {
887 | return UIColor(rgb: 0xffab40)
888 | }
889 |
890 | public static func orangeA400Color() -> UIColor {
891 | return UIColor(rgb: 0xff9100)
892 | }
893 |
894 | public static func orangeA700Color() -> UIColor {
895 | return UIColor(rgb: 0xff6d00)
896 | }
897 |
898 | // MARK: - deep-orange
899 |
900 | public static func deepOrange50Color() -> UIColor {
901 | return UIColor(rgb: 0xfbe9e7)
902 | }
903 |
904 | public static func deepOrange100Color() -> UIColor {
905 | return UIColor(rgb: 0xffccbc)
906 | }
907 |
908 | public static func deepOrange200Color() -> UIColor {
909 | return UIColor(rgb: 0xffab91)
910 | }
911 |
912 | public static func deepOrange300Color() -> UIColor {
913 | return UIColor(rgb: 0xff8a65)
914 | }
915 |
916 | public static func deepOrange400Color() -> UIColor {
917 | return UIColor(rgb: 0xff7043)
918 | }
919 |
920 | public static func deepOrange500Color() -> UIColor {
921 | return UIColor(rgb: 0xff5722)
922 | }
923 |
924 | public static func deepOrange600Color() -> UIColor {
925 | return UIColor(rgb: 0xf4511e)
926 | }
927 |
928 | public static func deepOrange700Color() -> UIColor {
929 | return UIColor(rgb: 0xe64a19)
930 | }
931 |
932 | public static func deepOrange800Color() -> UIColor {
933 | return UIColor(rgb: 0xd84315)
934 | }
935 |
936 | public static func deepOrange900Color() -> UIColor {
937 | return UIColor(rgb: 0xbf360c)
938 | }
939 |
940 | public static func deepOrangeA100Color() -> UIColor {
941 | return UIColor(rgb: 0xff9e80)
942 | }
943 |
944 | public static func deepOrangeA200Color() -> UIColor {
945 | return UIColor(rgb: 0xff6e40)
946 | }
947 |
948 | public static func deepOrangeA400Color() -> UIColor {
949 | return UIColor(rgb: 0xff3d00)
950 | }
951 |
952 | public static func deepOrangeA700Color() -> UIColor {
953 | return UIColor(rgb: 0xdd2c00)
954 | }
955 |
956 | // MARK: - brown
957 |
958 | public static func brown50Color() -> UIColor {
959 | return UIColor(rgb: 0xefebe9)
960 | }
961 |
962 | public static func brown100Color() -> UIColor {
963 | return UIColor(rgb: 0xd7ccc8)
964 | }
965 |
966 | public static func brown200Color() -> UIColor {
967 | return UIColor(rgb: 0xbcaaa4)
968 | }
969 |
970 | public static func brown300Color() -> UIColor {
971 | return UIColor(rgb: 0xa1887f)
972 | }
973 |
974 | public static func brown400Color() -> UIColor {
975 | return UIColor(rgb: 0x8d6e63)
976 | }
977 |
978 | public static func brown500Color() -> UIColor {
979 | return UIColor(rgb: 0x795548)
980 | }
981 |
982 | public static func brown600Color() -> UIColor {
983 | return UIColor(rgb: 0x6d4c41)
984 | }
985 |
986 | public static func brown700Color() -> UIColor {
987 | return UIColor(rgb: 0x5d4037)
988 | }
989 |
990 | public static func brown800Color() -> UIColor {
991 | return UIColor(rgb: 0x4e342e)
992 | }
993 |
994 | public static func brown900Color() -> UIColor {
995 | return UIColor(rgb: 0x3e2723)
996 | }
997 |
998 | // MARK: - grey
999 |
1000 | public static func grey50Color() -> UIColor {
1001 | return UIColor(rgb: 0xfafafa)
1002 | }
1003 |
1004 | public static func grey100Color() -> UIColor {
1005 | return UIColor(rgb: 0xf5f5f5)
1006 | }
1007 |
1008 | public static func grey200Color() -> UIColor {
1009 | return UIColor(rgb: 0xeeeeee)
1010 | }
1011 |
1012 | public static func grey300Color() -> UIColor {
1013 | return UIColor(rgb: 0xe0e0e0)
1014 | }
1015 |
1016 | public static func grey400Color() -> UIColor {
1017 | return UIColor(rgb: 0xbdbdbd)
1018 | }
1019 |
1020 | public static func grey500Color() -> UIColor {
1021 | return UIColor(rgb: 0x9e9e9e)
1022 | }
1023 |
1024 | public static func grey600Color() -> UIColor {
1025 | return UIColor(rgb: 0x757575)
1026 | }
1027 |
1028 | public static func grey700Color() -> UIColor {
1029 | return UIColor(rgb: 0x616161)
1030 | }
1031 |
1032 | public static func grey800Color() -> UIColor {
1033 | return UIColor(rgb: 0x424242)
1034 | }
1035 |
1036 | public static func grey900Color() -> UIColor {
1037 | return UIColor(rgb: 0x212121)
1038 | }
1039 |
1040 | // MARK: - blue-grey
1041 |
1042 | public static func blueGrey50Color() -> UIColor {
1043 | return UIColor(rgb: 0xeceff1)
1044 | }
1045 |
1046 | public static func blueGrey100Color() -> UIColor {
1047 | return UIColor(rgb: 0xcfd8dc)
1048 | }
1049 |
1050 | public static func blueGrey200Color() -> UIColor {
1051 | return UIColor(rgb: 0xb0bec5)
1052 | }
1053 |
1054 | public static func blueGrey300Color() -> UIColor {
1055 | return UIColor(rgb: 0x90a4ae)
1056 | }
1057 |
1058 | public static func blueGrey400Color() -> UIColor {
1059 | return UIColor(rgb: 0x78909c)
1060 | }
1061 |
1062 | public static func blueGrey500Color() -> UIColor {
1063 | return UIColor(rgb: 0x607d8b)
1064 | }
1065 |
1066 | public static func blueGrey600Color() -> UIColor {
1067 | return UIColor(rgb: 0x546e7a)
1068 | }
1069 |
1070 | public static func blueGrey700Color() -> UIColor {
1071 | return UIColor(rgb: 0x455a64)
1072 | }
1073 |
1074 | public static func blueGrey800Color() -> UIColor {
1075 | return UIColor(rgb: 0x37474f)
1076 | }
1077 |
1078 | public static func blueGrey900Color() -> UIColor {
1079 | return UIColor(rgb: 0x263238)
1080 | }
1081 |
1082 | // MARK: - black
1083 |
1084 | public static func blackColor() -> UIColor {
1085 | return UIColor(rgb: 0x000000)
1086 | }
1087 |
1088 | // MARK: - white
1089 |
1090 | public static func whiteColor() -> UIColor {
1091 | return UIColor(rgb: 0xffffff)
1092 | }
1093 | }
--------------------------------------------------------------------------------