如何添加带有scrollEdgeAppearance的自定义UITabBarController

问题描述 投票:0回答:1

我以编程方式创建了自定义 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
    }

    -------------
    -------------
    -------------

}

下面是输出

enter image description here

我遇到的 ScrollView 问题

我的 UIViewController 之一中有一个 UICollectionView,滚动如下。

enter image description here

在这种情况下,如何通过保持我创建的自定义选项卡栏视图的相同外观和感觉并禁用选项卡栏的透明度来使滚动边缘外观的 UI 保持不变??

swift uitabbarcontroller tabbar
1个回答
0
投票

我找到了针对上述问题的调整,如下所示。

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

如果有人遇到与此不同的任何解决方案,我希望您可以在这里发表回复。希望这对将来的人有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.