Files
real-e-party-iOS/YuMi/Modules/NewTabBar/NewTabBarController.swift
edwinQQQ e980cd5553 Phase 1 Day 1: 基础架构搭建
- 创建 white-label-base 分支
- 添加 APIConfig.swift(API 域名动态生成,XOR + Base64 加密)
  * DEV 环境使用原测试域名
  * RELEASE 环境使用新域名 https://api.epartylive.com
- 添加 Swift/OC 混编支持(YuMi-Bridging-Header.h)
- 创建 GlobalEventManager(全局事件管理器)
  * 迁移 NIMSDK 代理
  * 迁移房间最小化逻辑
  * 迁移全局通知处理
- 创建 NewTabBarController(Swift TabBar,只有 2 个 Tab)
  * Moment Tab
  * Mine Tab
  * 新的主色调和样式
2025-10-09 17:48:07 +08:00

198 lines
6.2 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// NewTabBarController.swift
// YuMi
//
// Created by AI on 2025-10-09.
// Copyright © 2025 YuMi. All rights reserved.
//
import UIKit
/// TabBar
/// Moment Mine Tab
class NewTabBarController: UITabBarController {
// MARK: - Properties
///
private var globalEventManager: GlobalEventManager?
///
private var isLoggedIn: Bool = false
// MARK: - Lifecycle
override func viewDidLoad() {
super.viewDidLoad()
//
#if DEBUG
APIConfig.testEncryption()
#endif
setupTabBarAppearance()
setupGlobalManagers()
setupInitialViewControllers()
NSLog("[NewTabBarController] 初始化完成")
}
deinit {
globalEventManager?.removeAllDelegates()
NSLog("[NewTabBarController] 已释放")
}
// MARK: - Setup
/// TabBar
private func setupTabBarAppearance() {
// TabBar
tabBar.tintColor = UIColor(red: 0.2, green: 0.6, blue: 0.86, alpha: 1.0) //
tabBar.unselectedItemTintColor = UIColor(white: 0.6, alpha: 1.0) //
tabBar.backgroundColor = .white
tabBar.isTranslucent = false
// 线
if #available(iOS 13.0, *) {
let appearance = UITabBarAppearance()
appearance.configureWithOpaqueBackground()
appearance.backgroundColor = .white
appearance.stackedLayoutAppearance.selected.iconColor = tabBar.tintColor
appearance.stackedLayoutAppearance.selected.titleTextAttributes = [
.foregroundColor: tabBar.tintColor ?? .blue,
.font: UIFont.systemFont(ofSize: 10, weight: .medium)
]
appearance.stackedLayoutAppearance.normal.titleTextAttributes = [
.foregroundColor: tabBar.unselectedItemTintColor ?? .gray,
.font: UIFont.systemFont(ofSize: 10)
]
tabBar.standardAppearance = appearance
if #available(iOS 15.0, *) {
tabBar.scrollEdgeAppearance = appearance
}
}
NSLog("[NewTabBarController] TabBar 外观设置完成")
}
///
private func setupGlobalManagers() {
globalEventManager = GlobalEventManager.shared()
globalEventManager?.setupSDKDelegates()
//
if let containerView = view {
globalEventManager?.setupRoomMiniView(on: containerView)
}
//
globalEventManager?.registerSocialShareCallback()
NSLog("[NewTabBarController] 全局管理器设置完成")
}
/// ViewController
private func setupInitialViewControllers() {
// TODO: 使
let blankVC1 = UIViewController()
blankVC1.view.backgroundColor = .white
blankVC1.tabBarItem = createTabBarItem(
title: "动态",
normalImage: "tab_moment_normal",
selectedImage: "tab_moment_selected"
)
let blankVC2 = UIViewController()
blankVC2.view.backgroundColor = .white
blankVC2.tabBarItem = createTabBarItem(
title: "我的",
normalImage: "tab_mine_normal",
selectedImage: "tab_mine_selected"
)
viewControllers = [blankVC1, blankVC2]
selectedIndex = 0
NSLog("[NewTabBarController] 初始 ViewControllers 设置完成")
}
/// TabBarItem
/// - Parameters:
/// - title:
/// - normalImage:
/// - selectedImage:
/// - Returns: UITabBarItem
private func createTabBarItem(title: String, normalImage: String, selectedImage: String) -> UITabBarItem {
let item = UITabBarItem(
title: title,
image: UIImage(named: normalImage)?.withRenderingMode(.alwaysOriginal),
selectedImage: UIImage(named: selectedImage)?.withRenderingMode(.alwaysOriginal)
)
return item
}
// MARK: - Public Methods
/// TabBar
/// - Parameter isLogin:
@objc func refreshTabBar(isLogin: Bool) {
isLoggedIn = isLogin
if isLogin {
setupLoggedInViewControllers()
} else {
setupInitialViewControllers()
}
NSLog("[NewTabBarController] TabBar 已刷新,登录状态: \(isLogin)")
}
/// ViewControllers
private func setupLoggedInViewControllers() {
// TODO: NewMomentViewController NewMineViewController
// let momentVC = NewMomentViewController()
// let mineVC = NewMineViewController()
let momentVC = UIViewController()
momentVC.view.backgroundColor = .white
momentVC.tabBarItem = createTabBarItem(
title: "动态",
normalImage: "tab_moment_normal",
selectedImage: "tab_moment_selected"
)
let mineVC = UIViewController()
mineVC.view.backgroundColor = .white
mineVC.tabBarItem = createTabBarItem(
title: "我的",
normalImage: "tab_mine_normal",
selectedImage: "tab_mine_selected"
)
viewControllers = [momentVC, mineVC]
selectedIndex = 0
NSLog("[NewTabBarController] 登录后 ViewControllers 设置完成")
}
}
// MARK: - UITabBarControllerDelegate
extension NewTabBarController: UITabBarControllerDelegate {
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
NSLog("[NewTabBarController] 选中 Tab: \(item.title ?? "Unknown")")
}
}
// MARK: - OC Compatibility
extension NewTabBarController {
/// OC
@objc static func create() -> NewTabBarController {
return NewTabBarController()
}
}