gpt4 book ai didi

swift - UITabBarItems 在子类化 UITabBarController 后不显示

转载 作者:行者123 更新时间:2023-11-28 12:09:11 24 4
gpt4 key购买 nike

我一直在尝试向我的应用程序中的 UITabBar 添加渐变。几次尝试失败后,我按照 this question 中的步骤操作和。渐变现在有效,但 UITabBarItems 是不可见的(尽管它们都有效)。如何确保渐变和 UIITabBarItems 都可见?

class GradientTabBarController: UITabBarController {

let layerGradient = CAGradientLayer()

override func viewDidLoad() {
super.viewDidLoad()
print("custom tabbar loaded")
layerGradient.colors = [UIColor(named: "tabBarGradient1")?.cgColor, UIColor(named: "tabBarGradient2")?.cgColor]
layerGradient.startPoint = CGPoint(x:0.5, y: 0)
layerGradient.endPoint = CGPoint(x: 0.5, y: 1)
layerGradient.frame = tabBar.bounds
self.tabBar.layer.addSublayer(layerGradient)
}
}

它在模拟器中的样子: Simulator view

缺少的图标(从 Interface Builder 查看) IB view

最佳答案

不支持您正在做的事情。但是,如果您打算这样做,则需要将渐变层放在 选项卡栏项目之后。您将其放在标签栏项目的前面:

 self.tabBar.layer.addSublayer(layerGradient)

你需要说的更像是:

 self.tabBar.layer.insertSublayer(layerGradient, at:0)

想法是将图层放在 标签栏项目之后。但是我不确定到底要使用什么数字;你必须进行试验,我不保证任何此类行动的稳健性。它甚至可能根本不起作用,因为标签栏项目不是 View 。

为标签栏制作自定义背景的正确方法是制作一个显示渐变的 UIView,并将其设置为标签栏的 backgroundImage。 .你为什么不以正确的支持方式而不是你的 hacky 不受支持的方式来做到这一点?您应该使用框架,而不是对抗框架。

关于swift - UITabBarItems 在子类化 UITabBarController 后不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48853864/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com