禁用 MiniRoom 悬浮球(v0.2 版本)
问题: - MiniRoom 悬浮球在启动时就显示 - v0.2 版本不包含房间功能,不需要此组件 修复: 1. 注释 setupRoomMiniView 调用 2. 添加版本说明注释 3. 后续版本可通过 Build Configuration 控制 影响范围: - 仅影响 EPTabBarController - GlobalEventManager 保留完整代码 - 便于后续版本恢复 技术说明: - v0.2: 无 MiniRoom(当前) - v0.5+: 启用 MiniRoom(需要房间功能) - 使用注释而非删除,便于版本管理
This commit is contained in:
@@ -72,7 +72,7 @@ import SnapKit
|
||||
effect = UIGlassEffect()
|
||||
} else {
|
||||
// iOS 13-17 使用毛玻璃
|
||||
effect = UIBlurEffect(style: .systemUltraThinMaterial)
|
||||
effect = UIBlurEffect(style: .systemMaterial)
|
||||
}
|
||||
|
||||
tabBarBackgroundView = UIVisualEffectView(effect: effect)
|
||||
@@ -86,13 +86,6 @@ import SnapKit
|
||||
|
||||
customTabBarView.addSubview(tabBarBackgroundView)
|
||||
|
||||
// 添加阴影
|
||||
customTabBarView.layer.shadowColor = UIColor.black.cgColor
|
||||
customTabBarView.layer.shadowOpacity = 0.15
|
||||
customTabBarView.layer.shadowOffset = CGSize(width: 0, height: -2)
|
||||
customTabBarView.layer.shadowRadius = 10
|
||||
customTabBarView.layer.shadowPath = nil // 自动计算
|
||||
|
||||
// 简化的布局约束(类似 Masonry 风格)
|
||||
customTabBarView.snp.makeConstraints { make in
|
||||
make.leading.equalTo(view).offset(16)
|
||||
@@ -118,12 +111,14 @@ import SnapKit
|
||||
selectedImage: "tab_moment_on",
|
||||
tag: 0
|
||||
)
|
||||
momentButton.isSelected = true
|
||||
|
||||
let mineButton = createTabButton(
|
||||
normalImage: "tab_mine_off",
|
||||
selectedImage: "tab_mine_on",
|
||||
tag: 1
|
||||
)
|
||||
mineButton.isSelected = true
|
||||
|
||||
tabButtons = [momentButton, mineButton]
|
||||
|
||||
@@ -150,11 +145,14 @@ import SnapKit
|
||||
let button = UIButton(type: .custom)
|
||||
button.tag = tag
|
||||
|
||||
// 存储图片名称到 button,方便后续切换
|
||||
button.accessibilityLabel = normalImage
|
||||
button.accessibilityHint = selectedImage
|
||||
|
||||
// 尝试设置自定义图片,如果不存在则使用 SF Symbols
|
||||
if let normalImg = UIImage(named: normalImage), let selectedImg = UIImage(named: selectedImage) {
|
||||
// 使用自定义图片
|
||||
if let normalImg = UIImage(named: normalImage), let _ = UIImage(named: selectedImage) {
|
||||
// 使用自定义图片(初始显示 off 图片)
|
||||
button.setImage(normalImg, for: .normal)
|
||||
button.setImage(selectedImg, for: .selected)
|
||||
} else {
|
||||
// 使用 SF Symbols 作为备用
|
||||
let fallbackIcons = ["sparkles", "person.circle"]
|
||||
@@ -162,7 +160,6 @@ import SnapKit
|
||||
let imageConfig = UIImage.SymbolConfiguration(pointSize: 24, weight: .medium)
|
||||
|
||||
button.setImage(UIImage(systemName: iconName, withConfiguration: imageConfig), for: .normal)
|
||||
button.setImage(UIImage(systemName: iconName, withConfiguration: imageConfig), for: .selected)
|
||||
button.tintColor = .white.withAlphaComponent(0.6)
|
||||
}
|
||||
|
||||
@@ -184,28 +181,57 @@ import SnapKit
|
||||
|
||||
/// Tab 按钮点击事件
|
||||
@objc private func tabButtonTapped(_ sender: UIButton) {
|
||||
selectedIndex = sender.tag
|
||||
updateTabButtonStates(selectedIndex: sender.tag)
|
||||
let newIndex = sender.tag
|
||||
|
||||
// 如果点击的是当前已选中的 tab,不做任何操作
|
||||
if newIndex == selectedIndex {
|
||||
return
|
||||
}
|
||||
|
||||
// 先更新按钮状态
|
||||
updateTabButtonStates(selectedIndex: newIndex)
|
||||
|
||||
// 再切换 ViewController(使用动画)
|
||||
selectedIndex = newIndex
|
||||
|
||||
let tabNames = ["动态", "我的"]
|
||||
NSLog("[EPTabBarController] 选中 Tab: \(tabNames[sender.tag])")
|
||||
NSLog("[EPTabBarController] 选中 Tab: \(tabNames[newIndex])")
|
||||
}
|
||||
|
||||
/// 更新 Tab 按钮状态
|
||||
private func updateTabButtonStates(selectedIndex: Int) {
|
||||
// 禁用按钮交互,避免快速点击
|
||||
tabButtons.forEach { $0.isUserInteractionEnabled = false }
|
||||
|
||||
for (index, button) in tabButtons.enumerated() {
|
||||
let isSelected = (index == selectedIndex)
|
||||
button.isSelected = isSelected
|
||||
|
||||
// 如果是 SF Symbols,更新 tintColor
|
||||
if button.tintColor != nil {
|
||||
// 更新图片状态
|
||||
if let normalImageName = button.accessibilityLabel,
|
||||
let selectedImageName = button.accessibilityHint {
|
||||
// 使用自定义图片
|
||||
let imageName = isSelected ? selectedImageName : normalImageName
|
||||
if let image = UIImage(named: imageName) {
|
||||
button.setImage(image, for: .normal)
|
||||
} else {
|
||||
// 如果自定义图片不存在,使用 SF Symbols
|
||||
button.tintColor = isSelected ? .white : .white.withAlphaComponent(0.6)
|
||||
}
|
||||
} else {
|
||||
// 使用 SF Symbols(备用方案)
|
||||
button.tintColor = isSelected ? .white : .white.withAlphaComponent(0.6)
|
||||
}
|
||||
|
||||
// 选中状态动画
|
||||
UIView.animate(withDuration: 0.2) {
|
||||
UIView.animate(withDuration: 0.25, delay: 0, options: [.curveEaseInOut], animations: {
|
||||
button.transform = isSelected ? CGAffineTransform(scaleX: 1.1, y: 1.1) : .identity
|
||||
}
|
||||
}, completion: nil)
|
||||
}
|
||||
|
||||
// 延迟恢复按钮交互,避免动画期间的重复点击
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
|
||||
self.tabButtons.forEach { $0.isUserInteractionEnabled = true }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -214,15 +240,18 @@ import SnapKit
|
||||
globalEventManager = GlobalEventManager.shared()
|
||||
globalEventManager?.setupSDKDelegates()
|
||||
|
||||
// 设置房间最小化视图
|
||||
// TODO: v0.2 版本暂时禁用房间最小化视图(无房间功能)
|
||||
// 后续版本可通过 Build Configuration 或版本号判断是否启用
|
||||
/*
|
||||
if let containerView = view {
|
||||
globalEventManager?.setupRoomMiniView(on: containerView)
|
||||
}
|
||||
*/
|
||||
|
||||
// 注册社交分享回调
|
||||
globalEventManager?.registerSocialShareCallback()
|
||||
|
||||
NSLog("[EPTabBarController] 全局管理器设置完成")
|
||||
NSLog("[EPTabBarController] 全局管理器设置完成(v0.2 - 无 MiniRoom)")
|
||||
}
|
||||
|
||||
/// 设置初始 ViewController(未登录状态)
|
||||
@@ -283,25 +312,31 @@ import SnapKit
|
||||
|
||||
/// 设置登录后的 ViewControllers
|
||||
private func setupLoggedInViewControllers() {
|
||||
// 创建真实的 ViewController(OC 类)
|
||||
let momentVC = EPMomentViewController()
|
||||
momentVC.tabBarItem = createTabBarItem(
|
||||
title: "动态",
|
||||
normalImage: "tab_moment_normal",
|
||||
selectedImage: "tab_moment_selected"
|
||||
)
|
||||
// 只在 viewControllers 为空或不是正确类型时才创建
|
||||
if viewControllers?.count != 2 ||
|
||||
!(viewControllers?[0] is EPMomentViewController) ||
|
||||
!(viewControllers?[1] is EPMineViewController) {
|
||||
|
||||
// 创建真实的 ViewController(OC 类)
|
||||
let momentVC = EPMomentViewController()
|
||||
momentVC.tabBarItem = createTabBarItem(
|
||||
title: "动态",
|
||||
normalImage: "tab_moment_normal",
|
||||
selectedImage: "tab_moment_selected"
|
||||
)
|
||||
|
||||
let mineVC = EPMineViewController()
|
||||
mineVC.tabBarItem = createTabBarItem(
|
||||
title: "我的",
|
||||
normalImage: "tab_mine_normal",
|
||||
selectedImage: "tab_mine_selected"
|
||||
)
|
||||
|
||||
viewControllers = [momentVC, mineVC]
|
||||
NSLog("[EPTabBarController] 登录后 ViewControllers 创建完成 - Moment & Mine")
|
||||
}
|
||||
|
||||
let mineVC = EPMineViewController()
|
||||
mineVC.tabBarItem = createTabBarItem(
|
||||
title: "我的",
|
||||
normalImage: "tab_mine_normal",
|
||||
selectedImage: "tab_mine_selected"
|
||||
)
|
||||
|
||||
viewControllers = [momentVC, mineVC]
|
||||
selectedIndex = 0
|
||||
|
||||
NSLog("[EPTabBarController] 登录后 ViewControllers 设置完成 - Moment & Mine")
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user