- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
这是我为标签栏 Controller 编写的代码:
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()
}
}
我想要导航 Controller 栏使用相同的颜色和图案。我应该怎么办?正如我所尝试的那样,它不像标签栏渐变那么简单我正在寻找新的 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
}
希望对你有帮助。
关于ios - 导航栏标签栏渐变色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51345547/
我需要我的 Sprite 从一种颜色过渡到另一种颜色,等等...比如蓝色,然后绿色,然后紫色,但我找不到任何好的 Action ,我想知道,我应该使用动画吗?或者是否有为此采取的联合行动? 最佳答案
我必须做某事。像这样,我无法弄清楚问题是什么。这是我的代码: size(200,200); background(255); float w = 200 ; float radius = 20; wh
我需要更改 Lollipop (API 21) 应用程序中 ProgressBar 元素的颜色。更清楚地说,我的意思是,例如,Youtube 移动应用程序循环进度条。例如,我需要将进度条的颜色设为红色
如何让网站像下面的例子那样改变 Activity 栏的颜色: 最佳答案 在您的网页中添加: 阅读更多 here . 关于android - 如何在 Material Design 中让 Activi
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我是一名优秀的程序员,十分优秀!