【问题标题】:navigation bar an tab bar gradient color导航栏标签栏渐变颜色
【发布时间】:2018-12-23 00:58:18
【问题描述】:

这是我为标签栏控制器编写的代码:

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

    }

}

我想要导航控制器栏的颜色和图案相同。 我该怎么办?正如我尝试的那样,它不像标签栏渐变那么容易 我正在寻找一个新的快速来源

【问题讨论】:

  • 我试过你发的这个链接,但对我的酒吧没有任何影响!!!!!!
  • @Kamran 您提供的这个链接是快速来源吗?
  • 第二个有红色导航栏的是swift代码但根本不起作用,这就是我添加这个问题的原因
  • 好的,在此处添加与导航栏设置相关的代码。

标签: ios iphone swift uinavigationcontroller gradient


【解决方案1】:

对于标签栏: 使用 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
 }

希望对你有所帮助。

【讨论】:

  • 它适用于标签栏,我不知道如何为导航控制器栏编码
  • OP 的代码适用于TabBar。问题是关于NavigationBar
  • @shiju86.v 它没有改变任何东西:| !!!!!!!!!也许我做错了!!!!我创建了一个 uinavigationcontroller 并将我的 uinavigationcontroller 连接到该文件
  • 我还添加了:gradient.startPoint = CGPoint(x: 0, y: 0.5) gradient.endPoint = CGPoint(x: 1, y: 0.5) 使其从左到右
  • 是不是也可以用这个函数来为按钮设置渐变色?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-15
  • 1970-01-01
  • 2016-05-04
  • 2011-10-22
相关资源
最近更新 更多