如何为carbonTabSwipeNavigation CarbonKit Cocoapods设置颜色渐变

3

我是iOS的新手。我想在CarbonTabSwipeNavigation上应用渐变颜色。我尝试将渐变应用于CarbonTabSwipeNavigation的工具栏,但未成功。我已经尝试使用静态颜色代码。

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))

考虑将答案标记为正确,以扩大问题的可见性:stackoverflow.com/help/someone-answers - Nilesh R Patel
1个回答

0

首先,在您的项目中添加这些扩展。

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
    }

}

然后根据您的需求调用此方法。

示例:如果您想在应用程序的导航栏上设置渐变颜色,则调用以下方法:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接