我以编程方式创建了自定义 UITabBarController,如下所示。
class CustomTabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
viewControllers = [
//<- adding my UIViewControllers embedded in UINavigationControllers here
]
configureTabbar()
}
func configureTabbar() {
UITabBar.appearance().backgroundColor = AppColors.mainBgColor
UITabBar.appearance().tintColor = AppColors.tabbarTintColor
let cornerRadius: CGFloat = 15
let layer = CAShapeLayer()
layer.path = UIBezierPath(roundedRect: CGRect(x: 45, y: self.tabBar.bounds.minY - 10, width: self.tabBar.bounds.width - 90, height: self.tabBar.bounds.height + 10), cornerRadius: cornerRadius).cgPath
layer.shadowColor = UIColor.lightGray.cgColor
layer.shadowOffset = CGSize(width: 5.0, height: 5.0)
layer.shadowRadius = 25.0
layer.shadowOpacity = 0.3
layer.borderWidth = 1.0
layer.opacity = 1.0
layer.isHidden = false
layer.masksToBounds = false
layer.fillColor = AppColors.tabbarBG.cgColor
self.tabBar.layer.insertSublayer(layer, at: 0)
if let items = self.tabBar.items {
items.forEach { item in
item.imageInsets = UIEdgeInsets(top: 0, left: 0, bottom: -15, right: 0)
}
}
self.tabBar.itemWidth = 30.0
self.tabBar.itemPositioning = .centered
}
-------------
-------------
-------------
}
下面是输出
我遇到的 ScrollView 问题
我的 UIViewController 之一中有一个 UICollectionView,滚动如下。
在这种情况下,如何通过保持我创建的自定义选项卡栏视图的相同外观和感觉并禁用选项卡栏的透明度来使滚动边缘外观的 UI 保持不变??
我找到了针对上述问题的调整,如下所示。
func configureTabbar() {
let tabBarAppearance = UITabBar.appearance()
tabBarAppearance.isTranslucent = false
tabBarAppearance.barTintColor = AppColors.tabbarTintColor
tabBarAppearance.backgroundColor = AppColors.mainBgColor
//UITabBar.appearance().backgroundColor = AppColors.mainBgColor
//UITabBar.appearance().tintColor = AppColors.tabbarTintColor
.......
.......
}
通过上述更改,修复了 UICollectionView 的 Tabbar 透明度问题,且不会使 UI 变得混乱。但是 barTintColor 变为默认蓝色。然后我取消注释下面的行,现在外观已修复。
UITabBar.appearance().tintColor = AppColors.tabbarTintColor
如果有人遇到与此不同的任何解决方案,我希望您可以在这里发表回复。希望这对将来的人有帮助。