tabBar 中的渐变背景
Gradient background in tabBar
我已经将 TabBarController
子类化,然后尝试制作渐变背景。但是它似乎不起作用。什么都没有显示。顺便说一下,我正在使用 Hue 框架
let tabBarGradient = [UIColor.redColor(), UIColor.blackColor()].gradient { gradient in
gradient.frame = self.tabBar.frame
gradient.startPoint = CGPointMake(0,0.5)
gradient.endPoint = CGPointMake(1,0.5)
return gradient
}
self.tabBar.layer.addSublayer(tabBarGradient)
在您的 CustomTabBarController 中,编写此代码:
import UIKit
class GradientTabBarController: 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.insertSublayer(layerGradient, at: 0)
}
}
您可以在标签栏中看到这样的渐变:
以及您在故事板中将 CustomTabBarController 分配给您的 TabBarController 的故事板。
为了扩展 Khuong 的回答,上面的内容不适用于 Y 渐变,因为它使用 view.Frame
设置 layerGradient.Frame
的宽度和高度。 view
是容器视图,比标签栏大。相反,在设置 layerGradient.Frame
时使用 tabBar.Frame
:
layerGradient.frame = CGRect(x: 0, y: 0, width: tabBar.bounds.width,height: tabBar.bounds.height)
使用
self.tabBar.layer.insertSublayer(layerGradient, at:0)
而不是
self.tabBar.layer.addSublayer(layerGradient)
我已经将 TabBarController
子类化,然后尝试制作渐变背景。但是它似乎不起作用。什么都没有显示。顺便说一下,我正在使用 Hue 框架
let tabBarGradient = [UIColor.redColor(), UIColor.blackColor()].gradient { gradient in
gradient.frame = self.tabBar.frame
gradient.startPoint = CGPointMake(0,0.5)
gradient.endPoint = CGPointMake(1,0.5)
return gradient
}
self.tabBar.layer.addSublayer(tabBarGradient)
在您的 CustomTabBarController 中,编写此代码:
import UIKit
class GradientTabBarController: 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.insertSublayer(layerGradient, at: 0)
}
}
您可以在标签栏中看到这样的渐变:
以及您在故事板中将 CustomTabBarController 分配给您的 TabBarController 的故事板。
为了扩展 Khuong 的回答,上面的内容不适用于 Y 渐变,因为它使用 view.Frame
设置 layerGradient.Frame
的宽度和高度。 view
是容器视图,比标签栏大。相反,在设置 layerGradient.Frame
时使用 tabBar.Frame
:
layerGradient.frame = CGRect(x: 0, y: 0, width: tabBar.bounds.width,height: tabBar.bounds.height)
使用
self.tabBar.layer.insertSublayer(layerGradient, at:0)
而不是
self.tabBar.layer.addSublayer(layerGradient)