//
|
// 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)
|
}
|
}
|