A simple and powerful library for using gradient layer

UIGradient

A simple and powerful library for using gradient layer, image, color.

Installation

UIGradient is now available on CocoaPods. Simply add the following to your project Podfile, and you'll be good to go.

pod 'UIGradient', '~> 1.1.2'

Usage

GradientLayer

Create a GradientLayer then add it to your view's

public extension UIView {

    public func addGradientWithDirection(_ direction: GradientDirection, colors: [UIColor], cornerRadius: CGFloat = 0, locations: [Double]? = nil)

    public func addGradient(_ gradientLayer: GradientLayer, cornerRadius: CGFloat = 0)
	
}

Example

let gradient = GradientLayer(direction: GradientDirection, colors: [UIColor])
view.addGradient(gradient)

UIGradient supports those directions below:

public enum GradientDirection {
    case topToBottom // top to bottom
    case bottomToTop // bottom to top
    case leftToRight // left to right
    case rightToLeft // right to left
    case topLeftToBottomRight // top left to bottom right
    case topRightToBottomLeft // top right to bottom left
    case bottomLeftToTopRight // bottom left to top right
    case bottomRightToTopLeft // bottom right to top left
}

You can also create a GradientLayer clone instance using this function:

open class GradientLayer: CAGradientLayer {
    ...
    public final func clone() -> GradientLayer
    ...
}

Gradient color

UIGradient allows you create gradient color

public extension UIColor {

    public static func fromGradient(_ gradient: GradientLayer, frame: CGRect, cornerRadius: CGFloat = 0) -> UIColor?
	
    public static func fromGradientWithDirection(_ direction: GradientDirection, frame: CGRect, colors: [UIColor], cornerRadius: CGFloat = 0, locations: [Double]? = nil) -> UIColor?
	
}

Example

let view1 = UIView(frame: frame)
view1.backgroundColor = UIColor.fromGradientWithDirection(.topToBottom, frame: frame, colors: [UIColor.blue, UIColor.green])
//view1.backgroundColor = UIColor.fromGradient(gradient, frame: frame)
let label = UILabel(frame: frame)
label.text = "some text"
label.textColor = UIColor.fromGradient(gradient, frame: frame)

Gradient image

UIGradient also allows you create gradient image

public extension UIImage {

    public static func fromGradient(_ gradient: GradientLayer, frame: CGRect, cornerRadius: CGFloat = 0) -> UIImage?
	
    public static func fromGradientWithDirection(_ direction: GradientDirection, frame: CGRect, colors: [UIColor], cornerRadius: CGFloat = 0, locations: [Double]? = nil) -> UIImage?
	
}

Example

let imageView = UIImageView(frame: frame)
imageView.image = UIImage.fromGradientWithDirection(.bottomLeftToTopRight, frame: frame, colors: [UIColor.blue, UIColor.green])

Gradient library

UIGradient was inspired by @lukedesigner. I created 24 gradients based on his website and make them static variables of GradientLayer so everyone can use those gradients for their projects.

let oceanBlueGradient 		= GradientLayer.oceanBlue
let sanguineGradient  		= GradientLayer.sanguine
let lusciousLimeGradient 	= GradientLayer.lusciousLime
let purpleLakeGradient 		= GradientLayer.purpleLake
...

You can explore them in my example project.

GitHub