杨锴
2025-04-16 09a372bc45fde16fd42257ab6f78b8deeecf720b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
//
//  BaseTabBarVC.swift
//  WanPai
//
//  Created by 杨锴 on 2023/6/8.
//
 
import UIKit
import JQTools
 
class BaseTabBarVC: UITabBarController {
 
                private var customBar = CustomTabbar()
 
    override func viewDidLoad() {
        super.viewDidLoad()
 
                                let home_nav = BaseNav(rootViewController: HomeVC())
                                home_nav.tabBarItem = UITabBarItem(title: "疗 愈", image: UIImage(named: "nav_1"), selectedImage: UIImage(named: "nav_1_select")!.withRenderingMode(.alwaysOriginal))
 
                                let course_nav = BaseNav(rootViewController: CourseVC())
                                course_nav.tabBarItem = UITabBarItem(title: "课 程", image: UIImage(named: "nav_2"), selectedImage: UIImage(named: "nav_2_select")!.withRenderingMode(.alwaysOriginal))
 
                                let tree_nav = BaseNav(rootViewController: TreeTeskVC())
                                tree_nav.tabBarItem = UITabBarItem(title: "树苗", image: UIImage(named: "nav_2"), selectedImage: UIImage(named: "nav_2_select")!.withRenderingMode(.alwaysOriginal))
 
                                let pavilion_nav = BaseNav(rootViewController: PavilionVC())
                                pavilion_nav.tabBarItem = UITabBarItem(title: "疗愈馆", image: UIImage(named: "nav_3"), selectedImage: UIImage(named: "nav_3_select")!.withRenderingMode(.alwaysOriginal))
 
                                let me_nav = BaseNav(rootViewController: MeVC())
                                me_nav.tabBarItem = UITabBarItem(title: "我 的", image: UIImage(named: "nav_4"), selectedImage: UIImage(named: "nav_4_select")!.withRenderingMode(.alwaysOriginal))
 
                                viewControllers = [home_nav,course_nav,tree_nav,pavilion_nav,me_nav]
                                setValue(customBar, forKey: "tabBar")
 
                                if #available(iOS 15.0, *) {
                                                let bar = UITabBarAppearance()
                                                bar.backgroundColor = .white
                                                bar.backgroundEffect = nil
                                                bar.shadowColor = .white
                                                tabBar.scrollEdgeAppearance = bar
                                                tabBar.standardAppearance = bar
                                } else {
                                                // Fallback on earlier versions
                                }
 
    }
 
                // 是否支持自动转屏
                override var shouldAutorotate: Bool {
                                guard let navigationController = selectedViewController as? UINavigationController else { return selectedViewController?.shouldAutorotate ?? false }
                                return navigationController.topViewController?.shouldAutorotate ?? false
                }
 
                // 支持哪些屏幕方向
                override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
                                guard let navigationController = selectedViewController as? UINavigationController else { return selectedViewController?.supportedInterfaceOrientations ?? .portrait }
                                return navigationController.topViewController?.supportedInterfaceOrientations ?? .portrait
                }
 
                // 默认的屏幕方向(当前ViewController必须是通过模态出来的UIViewController(模态带导航的无效)方式展现出来的,才会调用这个方法)
                override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {
                                guard let navigationController = selectedViewController as? UINavigationController else { return selectedViewController?.preferredInterfaceOrientationForPresentation ?? .portrait }
                                return navigationController.topViewController?.preferredInterfaceOrientationForPresentation ?? .portrait
                }
}
 
class CustomTabbar:UITabBar{
                let transferBtn = UIButton(type: .custom)
 
                override init(frame: CGRect) {
                                super.init(frame: frame)
                                backgroundColor = .white
                                tintColor = Def_ThemeColor
                                isTranslucent = false
                                customTransferBtn()
                }
 
                override func sizeThatFits(_ size: CGSize) -> CGSize {
                                var sizeThatFits = super.sizeThatFits(size)
                                sizeThatFits.height = max(sizeThatFits.height, 101.5)
                                return sizeThatFits
                }
 
                override func layoutSubviews() {
                                super.layoutSubviews()
        for (_,item) in subviews.enumerated() {
                                                if item.classForCoder == NSClassFromString("UITabBarButton"){
                                                                if (item.value(forKey: "_label") as? UILabel)?.text?.contains("树苗") ?? false{
                                                                                item.isHidden = true
                                                                }else{
                                                                                item.isHidden = false
                                                                }
                                                }
                                }
                                unselectedItemTintColor = UIColor(hexStr: "#4E4E4E")
                }
 
                @objc func selectCenterAction(){
                                JQ_currentNavigationController().tabBarController?.selectedIndex = 2
                }
 
                /// 自定义中心按钮
                private func customTransferBtn(){
                                transferBtn.setImage(UIImage(named: "nav_center"), for: .normal)
                                addSubview(transferBtn)
                                transferBtn.addTarget(self, action: #selector(selectCenterAction), for: .touchUpInside)
 
                                transferBtn.snp.makeConstraints { make in
                                                make.top.equalTo(10)
                                                make.centerX.equalToSuperview()
                                                make.width.equalTo(55)
                                                make.height.equalTo(55)
                                }
                }
 
 
                required init?(coder: NSCoder) {
                                super.init(coder: coder)
                }
}