我试图改变背景,唯一改变的是图像和标签颜色,我希望背景本身变成不同的颜色。
示例:
有人知道如何进行此更改吗?
答案 0 :(得分:0)
你可能会尝试类似的东西:
UITabBar.appearance().backgroundColor = .white
UITabBar.appearance().tintColor = .green // or whatever your green is
这会使应用程序中的所有标签栏在实例化时默认为这些颜色。
注意:我没有测试过这个。
答案 1 :(得分:0)
为什么每个tabBarItem都没有两个图像,其中一个图像用于默认状态,另一个图像用于选择状态。在您的情况下,所有状态均为白色,默认为绿色。
您可以通过UIBarItem UIBarItem
的商店属性或构造函数/初始化程序var selectedImage: UIImage? { get set }
为init(title: String?, image: UIImage?, selectedImage: UIImage?)
设置这些图片。
答案 2 :(得分:0)
在UITabBarController
中添加以下代码:
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
let removeSelectedBackground = {
tabBar.subviews.filter({ $0.layer.name == "TabBackgroundView" }).first?.removeFromSuperview()
}
let addSelectedBackground = { (bgColour: UIColor) in
let tabIndex = CGFloat(tabBar.items!.index(of: item)!)
let tabWidth = tabBar.bounds.width / CGFloat(tabBar.items!.count)
let bgView = UIView(frame: CGRect(x: tabWidth * tabIndex, y: 0, width: tabWidth, height: tabBar.bounds.height))
bgView.backgroundColor = bgColour
bgView.layer.name = "TabBackgroundView"
tabBar.insertSubview(bgView, at: 0)
}
removeSelectedBackground()
addSelectedBackground(UIColor.green)
}
它会在所选标签的任何位置插入green
视图。您也可以使其尊重safeAreaInsets
..现在,无论何时选择标签,它都会从{{{{{{{ 1}}并在正确的位置添加一个新的。如果您喜欢或者从旧位置动画到新位置,您可以每次重复使用相同的视图......无论您感觉如何。您可以按标签而不是图层名称来识别视图,但这只是个人偏好。