Ios 导航栏选项卡栏渐变颜色

Ios 导航栏选项卡栏渐变颜色,ios,iphone,swift,uinavigationcontroller,gradient,Ios,Iphone,Swift,Uinavigationcontroller,Gradient,这是我为选项卡栏控制器编写的代码: class TabBarUiViewController: UITabBarController { let layerGradient = CAGradientLayer() override func viewDidLoad() { layerGradient.colors = [UIColor.init(red: 247/255, green: 146/255, blue: 30/255, alpha: 1).cg

这是我为选项卡栏控制器编写的代码:

class TabBarUiViewController: UITabBarController {

    let layerGradient = CAGradientLayer()


    override func viewDidLoad() {

        layerGradient.colors = [UIColor.init(red: 247/255, green: 146/255, blue: 30/255, alpha: 1).cgColor, UIColor.init(red: 236/255, green: 104/255, blue: 66/255, alpha: 1).cgColor]
        layerGradient.startPoint = CGPoint(x: 0, y: 0.5)
        layerGradient.endPoint = CGPoint(x: 1, y: 0.5)
        layerGradient.frame = CGRect(x: 0, y: 0, width: view.bounds.width, height: view.bounds.height)
        self.tabBar.layer.insertSublayer(layerGradient,at:0)
        self.tabBar.unselectedItemTintColor = .black

        super.viewDidLoad()

    }

}
我想为导航控制器栏相同的颜色和图案。 我该怎么办?当我尝试时,它不像选项卡栏渐变那样容易 我正在为Tabbar寻找一个新的swift来源: 使用addSublayer而不是insertSublayer

类TabBarUiViewController:UITabBarController{

let layerGradient = CAGradientLayer()

override func viewDidLoad() {
    super.viewDidLoad()

    layerGradient.colors = [UIColor.red.cgColor, UIColor.yellow.cgColor]
    layerGradient.startPoint = CGPoint(x: 0, y: 0.5)
    layerGradient.endPoint = CGPoint(x: 1, y: 0.5)
    layerGradient.frame = CGRect(x: 0, y: 0, width: view.bounds.width, height: view.bounds.height)
    self.tabBar.layer.addSublayer(layerGradient)
}
}

和导航栏:

override func viewDidLoad() {

super.viewDidLoad()

self.title = "Gradient Navigation Bar"

if let navFrame = self.navigationController?.navigationBar.frame {

  let newframe = CGRect(origin: .zero, size: CGSize(width: navFrame.width, height: (navFrame.height + UIApplication.shared.statusBarFrame.height) ))

  let image = gradientWithFrametoImage(frame: newframe, colors: [UIColor.red.cgColor, UIColor.blue.cgColor])!

  self.navigationController?.navigationBar.barTintColor = UIColor(patternImage: image)

 }
}

func gradientWithFrametoImage(frame: CGRect, colors: [CGColor]) -> UIImage? {
  let gradient: CAGradientLayer  = CAGradientLayer(layer: self.view.layer)
  gradient.frame = frame
  gradient.colors = colors
  UIGraphicsBeginImageContext(frame.size)
  gradient.render(in: UIGraphicsGetCurrentContext()!)
  let image = UIGraphicsGetImageFromCurrentImageContext()
  UIGraphicsEndImageContext()
  return image
 }

希望这对您有所帮助。

它对选项卡栏工作正常,我不知道如何为导航控制器进行编码。barOP的代码适用于
TabBar
。问题是关于
NavigationBar
@shiju86.v它没有改变任何东西:|!!!!!!!!也许我做得不对!!!!我已经创建了一个uinavigationcontroller,并将我的uinavigationcontroller连接到该文件。我还添加了:gradient.startPoint=CGPoint(x:0,y:0.5)gradient.endPoint=CGPoint(x:1,y:0.5)从左到右是不是也可以使用这个函数为按钮添加渐变色?可能是重复的我已经尝试了你发送的这个链接,但对我的工具栏没有任何影响@Kamran您提供的链接是swift来源吗?第二个链接有一个红色导航栏,是swift代码,但根本不起作用,这就是我添加此问题的原因。好的,在此处添加与导航栏设置相关的代码。