как установить градиент цвета для carbonTabSwipeNavigation CarbonKit Cocoapods - PullRequest
0 голосов
/ 14 февраля 2019

Я новичок в iOS. Я хочу применить цвета градиента к CarbonTabSwipeNavigation. Я пытался применить градиент к панели инструментов CarbonTabSwipeNavigation, но этого не произошло, я пытался использовать статический код цвета Colour

carbonTabSwipeNavigation.toolbar.isTranslucent = true 
var color1 = hexStringToUIColor(hex: "#00275E")
carbonTabSwipeNavigation.carbonSegmentedControl?.backgroundColor = color1
carbonTabSwipeNavigation.setIndicatorColor(UIColor.white) //tabBar font
carbonTabSwipeNavigation.setSelectedColor(UIColor.white, font: UIFont.boldSystemFont(ofSize: 14))

1 Ответ

0 голосов
/ 14 февраля 2019

Сначала добавьте эти расширения в свой проект.

extension UINavigationBar {

    func setGradientBackground(colors: [UIColor]) {

        var updatedFrame = bounds
        updatedFrame.size.height += self.frame.origin.y
        let gradientLayer = CAGradientLayer(frame: updatedFrame, colors: colors)

        setBackgroundImage(gradientLayer.createGradientImage(), for: UIBarMetrics.default)
    }
}

extension UIView {

    func setGradientBackgroundOnView(colors: [UIColor]) {

        var updatedFrame = bounds
        //    updatedFrame.size.height += self.frame.origin.y
        let gradientLayer = CAGradientLayer(frame: updatedFrame, colors: colors)
        self.layer.insertSublayer(gradientLayer, at: 0)
    }
}

extension CAGradientLayer {

    convenience init(frame: CGRect, colors: [UIColor]) {
        self.init()
        self.frame = frame
        self.colors = []
        for color in colors {
            self.colors?.append(color.cgColor)
        }
        startPoint = CGPoint(x: 0, y: 1)
        endPoint = CGPoint(x: 1, y: 1)
    }

    func createGradientImage() -> UIImage? {

        var image: UIImage? = nil
        UIGraphicsBeginImageContext(bounds.size)
        if let context = UIGraphicsGetCurrentContext() {
            render(in: context)
            image = UIGraphicsGetImageFromCurrentImageContext()
        }
        UIGraphicsEndImageContext()
        return image
    }

}

Затем вызовите этот метод как ваше требование.

Пример : - Если вы хотите установить gradient цвет на navigationbar вашего приложения, тогда позвоните, используйте этот

self.navigationController?.navigationBar.setGradientBackground(colors: [UIColor.black, UIColor.red])
...