Skip to content

Instantly share code, notes, and snippets.

@pranavansp
Created July 8, 2019 06:24
Show Gist options
  • Save pranavansp/6b9e5ea66fcb3a32e32b3ec548ff9381 to your computer and use it in GitHub Desktop.
Save pranavansp/6b9e5ea66fcb3a32e32b3ec548ff9381 to your computer and use it in GitHub Desktop.
import Foundation
import UIKit
extension UINavigationBar {
func setGradientBackground(to navController: UINavigationController) {
let gradient = CAGradientLayer()
var bounds = navController.navigationBar.bounds
bounds.size.height += UIApplication.shared.statusBarFrame.size.height
gradient.frame = bounds
gradient.colors = [ColorName.secoandary.color.cgColor, ColorName.primary.color.cgColor]
gradient.startPoint = CGPoint(x: 0, y: 0)
gradient.endPoint = CGPoint(x: 0, y: 1)
if let image = getImageFrom(gradientLayer: gradient) {
navController.navigationBar.setBackgroundImage(image, for: UIBarMetrics.default)
}
}
func getImageFrom(gradientLayer:CAGradientLayer) -> UIImage? {
var gradientImage:UIImage?
UIGraphicsBeginImageContext(gradientLayer.frame.size)
if let context = UIGraphicsGetCurrentContext() {
gradientLayer.render(in: context)
gradientImage = UIGraphicsGetImageFromCurrentImageContext()?.resizableImage(withCapInsets: UIEdgeInsets.zero, resizingMode: .stretch)
}
UIGraphicsEndImageContext()
return gradientImage
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment