|  |  |  | 
 | 
					
						
							|  |  |  | extension UIColor { | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     public func adjustHue(by degrees: CGFloat) -> UIColor { | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         var currentHue: CGFloat = 0.0 | 
					
						
							|  |  |  |         var currentSaturation: CGFloat = 0.0 | 
					
						
							|  |  |  |         var currentBrigthness: CGFloat = 0.0 | 
					
						
							|  |  |  |         var currentAlpha: CGFloat = 0.0 | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         if getHue(¤tHue, saturation: ¤tSaturation, brightness: ¤tBrigthness, alpha: ¤tAlpha) { | 
					
						
							|  |  |  |             // Round values so we get closer values to Desktop | 
					
						
							|  |  |  |             let currentHueDegrees = (currentHue * 360.0).rounded() | 
					
						
							|  |  |  |             let normalizedDegrees = fmod(degrees, 360.0).rounded() | 
					
						
							|  |  |  |              | 
					
						
							|  |  |  |             // Make sure we're in the range 0 to 360 | 
					
						
							|  |  |  |             var newHue = fmod(currentHueDegrees + normalizedDegrees, 360.0) | 
					
						
							|  |  |  |             if (newHue < 0) { newHue = 360 + newHue } | 
					
						
							|  |  |  |              | 
					
						
							|  |  |  |             let decimalHue = (currentHueDegrees + normalizedDegrees) / 360.0 | 
					
						
							|  |  |  |              | 
					
						
							|  |  |  |             return UIColor(hue: decimalHue, | 
					
						
							|  |  |  |                            saturation: currentSaturation, | 
					
						
							|  |  |  |                            brightness: currentBrigthness, | 
					
						
							|  |  |  |                            alpha: 1.0) | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             return self | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     convenience init(red: Int, green: Int, blue: Int, a: CGFloat = 1.0) { | 
					
						
							|  |  |  |         self.init( | 
					
						
							|  |  |  |             red: CGFloat(red) / 255.0, | 
					
						
							|  |  |  |             green: CGFloat(green) / 255.0, | 
					
						
							|  |  |  |             blue: CGFloat(blue) / 255.0, | 
					
						
							|  |  |  |             alpha: a | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     convenience init(rgb: Int, a: CGFloat = 1.0) { | 
					
						
							|  |  |  |         self.init( | 
					
						
							|  |  |  |             red: (rgb >> 16) & 0xFF, | 
					
						
							|  |  |  |             green: (rgb >> 8) & 0xFF, | 
					
						
							|  |  |  |             blue: rgb & 0xFF, | 
					
						
							|  |  |  |             a: a | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |