网路监控,空白页面
This commit is contained in:
parent
d3cd10c3d7
commit
a805885950
@ -59,6 +59,8 @@
|
|||||||
BF3A56812E30C08F009E5CF9 /* BRHotSearchTagCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF3A56802E30C08F009E5CF9 /* BRHotSearchTagCell.swift */; };
|
BF3A56812E30C08F009E5CF9 /* BRHotSearchTagCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF3A56802E30C08F009E5CF9 /* BRHotSearchTagCell.swift */; };
|
||||||
BF3A56832E30C561009E5CF9 /* BRSearchResultView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF3A56822E30C561009E5CF9 /* BRSearchResultView.swift */; };
|
BF3A56832E30C561009E5CF9 /* BRSearchResultView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF3A56822E30C561009E5CF9 /* BRSearchResultView.swift */; };
|
||||||
BF3A56852E30CA78009E5CF9 /* BRSearchResultCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF3A56842E30CA78009E5CF9 /* BRSearchResultCell.swift */; };
|
BF3A56852E30CA78009E5CF9 /* BRSearchResultCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF3A56842E30CA78009E5CF9 /* BRSearchResultCell.swift */; };
|
||||||
|
BF3A56882E30E0DD009E5CF9 /* BREmpty.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF3A56872E30E0DD009E5CF9 /* BREmpty.swift */; };
|
||||||
|
BF3A568A2E30E7EF009E5CF9 /* BRNetworkStatusManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF3A56892E30E7EF009E5CF9 /* BRNetworkStatusManager.swift */; };
|
||||||
BF692AEB2E0A475D00A5C2DA /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF692AE12E0A475D00A5C2DA /* AppDelegate.swift */; };
|
BF692AEB2E0A475D00A5C2DA /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF692AE12E0A475D00A5C2DA /* AppDelegate.swift */; };
|
||||||
BF692AEC2E0A475D00A5C2DA /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF692AE82E0A475D00A5C2DA /* SceneDelegate.swift */; };
|
BF692AEC2E0A475D00A5C2DA /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF692AE82E0A475D00A5C2DA /* SceneDelegate.swift */; };
|
||||||
BF692AEE2E0A475D00A5C2DA /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = BF692AE22E0A475D00A5C2DA /* Assets.xcassets */; };
|
BF692AEE2E0A475D00A5C2DA /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = BF692AE22E0A475D00A5C2DA /* Assets.xcassets */; };
|
||||||
@ -204,6 +206,8 @@
|
|||||||
BF3A56802E30C08F009E5CF9 /* BRHotSearchTagCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BRHotSearchTagCell.swift; sourceTree = "<group>"; };
|
BF3A56802E30C08F009E5CF9 /* BRHotSearchTagCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BRHotSearchTagCell.swift; sourceTree = "<group>"; };
|
||||||
BF3A56822E30C561009E5CF9 /* BRSearchResultView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BRSearchResultView.swift; sourceTree = "<group>"; };
|
BF3A56822E30C561009E5CF9 /* BRSearchResultView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BRSearchResultView.swift; sourceTree = "<group>"; };
|
||||||
BF3A56842E30CA78009E5CF9 /* BRSearchResultCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BRSearchResultCell.swift; sourceTree = "<group>"; };
|
BF3A56842E30CA78009E5CF9 /* BRSearchResultCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BRSearchResultCell.swift; sourceTree = "<group>"; };
|
||||||
|
BF3A56872E30E0DD009E5CF9 /* BREmpty.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BREmpty.swift; sourceTree = "<group>"; };
|
||||||
|
BF3A56892E30E7EF009E5CF9 /* BRNetworkStatusManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BRNetworkStatusManager.swift; sourceTree = "<group>"; };
|
||||||
BF692AC92E0A475500A5C2DA /* BeeReel.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BeeReel.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
BF692AC92E0A475500A5C2DA /* BeeReel.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BeeReel.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
BF692AE12E0A475D00A5C2DA /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
BF692AE12E0A475D00A5C2DA /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||||
BF692AE22E0A475D00A5C2DA /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
BF692AE22E0A475D00A5C2DA /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||||
@ -491,6 +495,14 @@
|
|||||||
path = View;
|
path = View;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
BF3A56862E30E0C2009E5CF9 /* Empty */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
BF3A56872E30E0DD009E5CF9 /* BREmpty.swift */,
|
||||||
|
);
|
||||||
|
path = Empty;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
BF692AC02E0A475500A5C2DA = {
|
BF692AC02E0A475500A5C2DA = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@ -574,6 +586,7 @@
|
|||||||
BF692AF62E0A480000A5C2DA /* Lib */ = {
|
BF692AF62E0A480000A5C2DA /* Lib */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
BF3A56862E30E0C2009E5CF9 /* Empty */,
|
||||||
BF692B452E0A9B5800A5C2DA /* Player */,
|
BF692B452E0A9B5800A5C2DA /* Player */,
|
||||||
BF692B1D2E0A803000A5C2DA /* LocalizedManager */,
|
BF692B1D2E0A803000A5C2DA /* LocalizedManager */,
|
||||||
BF692B142E0A7CB500A5C2DA /* HUD */,
|
BF692B142E0A7CB500A5C2DA /* HUD */,
|
||||||
@ -846,6 +859,7 @@
|
|||||||
BF692AFB2E0A6F1B00A5C2DA /* BRNetworkTarget.swift */,
|
BF692AFB2E0A6F1B00A5C2DA /* BRNetworkTarget.swift */,
|
||||||
BF692AF92E0A6EFD00A5C2DA /* BRNetwork.swift */,
|
BF692AF92E0A6EFD00A5C2DA /* BRNetwork.swift */,
|
||||||
BF78108A2E0D4EB3007DEEBC /* BRURLPath.swift */,
|
BF78108A2E0D4EB3007DEEBC /* BRURLPath.swift */,
|
||||||
|
BF3A56892E30E7EF009E5CF9 /* BRNetworkStatusManager.swift */,
|
||||||
);
|
);
|
||||||
path = Base;
|
path = Base;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -1090,6 +1104,7 @@
|
|||||||
BFC676932E126A62006659E5 /* BRSpotlightNewMainCell.swift in Sources */,
|
BFC676932E126A62006659E5 /* BRSpotlightNewMainCell.swift in Sources */,
|
||||||
BFC6768D2E123D6E006659E5 /* AttributedString+BRAdd.swift in Sources */,
|
BFC6768D2E123D6E006659E5 /* AttributedString+BRAdd.swift in Sources */,
|
||||||
BF02B8392E30B30400172177 /* AlignedCollectionViewFlowLayout.swift in Sources */,
|
BF02B8392E30B30400172177 /* AlignedCollectionViewFlowLayout.swift in Sources */,
|
||||||
|
BF3A56882E30E0DD009E5CF9 /* BREmpty.swift in Sources */,
|
||||||
BF3338F52E1616B200B10F76 /* BRExploreControlView.swift in Sources */,
|
BF3338F52E1616B200B10F76 /* BRExploreControlView.swift in Sources */,
|
||||||
BF692B132E0A7B9000A5C2DA /* BRUserInfo.swift in Sources */,
|
BF692B132E0A7B9000A5C2DA /* BRUserInfo.swift in Sources */,
|
||||||
BF692B042E0A76D200A5C2DA /* BRLoginManager.swift in Sources */,
|
BF692B042E0A76D200A5C2DA /* BRLoginManager.swift in Sources */,
|
||||||
@ -1145,6 +1160,7 @@
|
|||||||
BF02B7F52E2F203D00172177 /* BRHomeCategoriesViewController.swift in Sources */,
|
BF02B7F52E2F203D00172177 /* BRHomeCategoriesViewController.swift in Sources */,
|
||||||
BFC676752E0E93B3006659E5 /* BRTableViewCell.swift in Sources */,
|
BFC676752E0E93B3006659E5 /* BRTableViewCell.swift in Sources */,
|
||||||
BF78108B2E0D4EB3007DEEBC /* BRURLPath.swift in Sources */,
|
BF78108B2E0D4EB3007DEEBC /* BRURLPath.swift in Sources */,
|
||||||
|
BF3A568A2E30E7EF009E5CF9 /* BRNetworkStatusManager.swift in Sources */,
|
||||||
BF692B092E0A775500A5C2DA /* BRLoginToken.swift in Sources */,
|
BF692B092E0A775500A5C2DA /* BRLoginToken.swift in Sources */,
|
||||||
BF692AFC2E0A6F8000A5C2DA /* BRNetworkTarget.swift in Sources */,
|
BF692AFC2E0A6F8000A5C2DA /* BRNetworkTarget.swift in Sources */,
|
||||||
BF02B7FF2E2F2F2900172177 /* BRHomeCategoriesCell.swift in Sources */,
|
BF02B7FF2E2F2F2900172177 /* BRHomeCategoriesCell.swift in Sources */,
|
||||||
|
73
BeeReel/Base/Network/Base/BRNetworkStatusManager.swift
Normal file
73
BeeReel/Base/Network/Base/BRNetworkStatusManager.swift
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
//
|
||||||
|
// BRNetworkStatusManager.swift
|
||||||
|
// BeeReel
|
||||||
|
//
|
||||||
|
// Created by 湖南秦九 on 2025/7/23.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
import Network
|
||||||
|
|
||||||
|
class BRNetworkStatusManager: NSObject {
|
||||||
|
static let manager = BRNetworkStatusManager()
|
||||||
|
|
||||||
|
///是否有网
|
||||||
|
var isReachable: Bool?
|
||||||
|
|
||||||
|
private var connectionType: NWInterface.InterfaceType?
|
||||||
|
private var status: NWPath.Status?
|
||||||
|
|
||||||
|
private let monitor = NWPathMonitor()
|
||||||
|
private let queue = DispatchQueue(label: "NetworkMonitorQueue")
|
||||||
|
|
||||||
|
func startMonitoring() {
|
||||||
|
|
||||||
|
monitor.pathUpdateHandler = { [weak self] path in
|
||||||
|
guard let self = self else { return }
|
||||||
|
self.status = path.status
|
||||||
|
|
||||||
|
if path.usesInterfaceType(.wifi) {
|
||||||
|
self.connectionType = .wifi
|
||||||
|
} else if path.usesInterfaceType(.cellular) {
|
||||||
|
self.connectionType = .cellular
|
||||||
|
} else if path.usesInterfaceType(.wiredEthernet) {
|
||||||
|
self.connectionType = .wiredEthernet
|
||||||
|
} else {
|
||||||
|
self.connectionType = nil
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if path.status == .satisfied, self.connectionType != nil {
|
||||||
|
if self.isReachable == false {
|
||||||
|
self.isReachable = true
|
||||||
|
DispatchQueue.main.async {
|
||||||
|
NotificationCenter.default.post(name: BRNetworkStatusManager.networkStatusDidChangeNotification, object: nil)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
self.isReachable = true
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if self.isReachable == true {
|
||||||
|
self.isReachable = false
|
||||||
|
DispatchQueue.main.async {
|
||||||
|
NotificationCenter.default.post(name: BRNetworkStatusManager.networkStatusDidChangeNotification, object: nil)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
self.isReachable = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
monitor.start(queue: queue)
|
||||||
|
}
|
||||||
|
|
||||||
|
func stopMonitoring() {
|
||||||
|
monitor.cancel()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension BRNetworkStatusManager {
|
||||||
|
///网络发生变化
|
||||||
|
@objc static let networkStatusDidChangeNotification = NSNotification.Name(rawValue: "BRNetworkStatusManager.networkStatusDidChangeNotification")
|
||||||
|
}
|
@ -198,6 +198,10 @@ extension BRExploreViewController: BRPlayerListViewControllerDelegate, BRPlayerL
|
|||||||
videoNameLabel.text = self.viewModel.currentPlayer?.shortModel?.name
|
videoNameLabel.text = self.viewModel.currentPlayer?.shortModel?.name
|
||||||
favoriteButton.isSelected = self.viewModel.currentPlayer?.shortModel?.is_collect ?? true
|
favoriteButton.isSelected = self.viewModel.currentPlayer?.shortModel?.is_collect ?? true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func br_playerViewControllerLoadMoreData(playerViewController: BRPlayerListViewController) {
|
||||||
|
self.requestDataArr(page: self.page + 1)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -47,6 +47,8 @@ class BRFavoritesViewController: BRViewController {
|
|||||||
let collectionView = BRCollectionView(frame: .zero, collectionViewLayout: collectionViewLayout)
|
let collectionView = BRCollectionView(frame: .zero, collectionViewLayout: collectionViewLayout)
|
||||||
collectionView.delegate = self
|
collectionView.delegate = self
|
||||||
collectionView.dataSource = self
|
collectionView.dataSource = self
|
||||||
|
collectionView.ly_emptyView = BREmpty.br_normalEmptyView()
|
||||||
|
collectionView.ly_emptyView.autoShowEmptyView = false
|
||||||
collectionView.br_addRefreshHeader { [weak self] in
|
collectionView.br_addRefreshHeader { [weak self] in
|
||||||
self?.handleHeaderRefresh(nil)
|
self?.handleHeaderRefresh(nil)
|
||||||
}
|
}
|
||||||
@ -105,6 +107,13 @@ class BRFavoritesViewController: BRViewController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private func updateEmptyStatus() {
|
||||||
|
if listArr.isEmpty, self.playHistoryModel == nil {
|
||||||
|
self.collectionView.ly_showEmpty()
|
||||||
|
} else {
|
||||||
|
self.collectionView.ly_hideEmpty()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -192,6 +201,7 @@ extension BRFavoritesViewController {
|
|||||||
self.page = page
|
self.page = page
|
||||||
self.collectionView.reloadData()
|
self.collectionView.reloadData()
|
||||||
}
|
}
|
||||||
|
self.updateEmptyStatus()
|
||||||
completer?()
|
completer?()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -202,6 +212,7 @@ extension BRFavoritesViewController {
|
|||||||
guard let self = self else { return }
|
guard let self = self else { return }
|
||||||
guard let list = listModel?.list else { return }
|
guard let list = listModel?.list else { return }
|
||||||
self.playHistoryModel = list.first
|
self.playHistoryModel = list.first
|
||||||
|
self.updateEmptyStatus()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -142,6 +142,7 @@ class BRHomeViewController: BRViewController {
|
|||||||
self.edgesForExtendedLayout = [.top, .bottom]
|
self.edgesForExtendedLayout = [.top, .bottom]
|
||||||
self.statusBarStyle = .lightContent
|
self.statusBarStyle = .lightContent
|
||||||
self.navigationController?.isNavigationBarHidden = true
|
self.navigationController?.isNavigationBarHidden = true
|
||||||
|
NotificationCenter.default.addObserver(self, selector: #selector(networkStatusDidChangeNotification), name: BRNetworkStatusManager.networkStatusDidChangeNotification, object: nil)
|
||||||
|
|
||||||
br_setupUI()
|
br_setupUI()
|
||||||
|
|
||||||
@ -239,6 +240,18 @@ extension BRHomeViewController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
extension BRHomeViewController {
|
extension BRHomeViewController {
|
||||||
|
///网络状态监听
|
||||||
|
@objc private func networkStatusDidChangeNotification() {
|
||||||
|
guard BRNetworkStatusManager.manager.isReachable == true else {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if self.viewModel.homeOldDataArr.isEmpty {
|
||||||
|
self.handleHeaderRefresh(nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@objc private func handleSearchButton() {
|
@objc private func handleSearchButton() {
|
||||||
let vc = BRSearchViewController()
|
let vc = BRSearchViewController()
|
||||||
|
|
||||||
|
@ -11,15 +11,11 @@ import SJMediaCacheServer
|
|||||||
|
|
||||||
@objc protocol BRPlayerListViewControllerDelegate {
|
@objc protocol BRPlayerListViewControllerDelegate {
|
||||||
|
|
||||||
///加载新数据
|
|
||||||
@objc optional func br_playerViewControllerLoadNewDataV2(playerViewController: BRPlayerListViewController)
|
|
||||||
|
|
||||||
///将要加载更多数据
|
///将要加载更多数据
|
||||||
@objc optional func br_playerViewControllerShouldLoadMoreData(playerViewController: BRPlayerListViewController) -> Bool
|
@objc optional func br_playerViewControllerShouldLoadMoreData(playerViewController: BRPlayerListViewController) -> Bool
|
||||||
///加载更多数据
|
///加载更多数据
|
||||||
@objc optional func br_playerViewControllerLoadMoreData(playerViewController: BRPlayerListViewController)
|
@objc optional func br_playerViewControllerLoadMoreData(playerViewController: BRPlayerListViewController)
|
||||||
///向上加载更多数据
|
|
||||||
@objc optional func br_playerViewControllerLoadUpMoreData(playerViewController: BRPlayerListViewController)
|
|
||||||
|
|
||||||
///当前展示的发生变化
|
///当前展示的发生变化
|
||||||
@objc optional func br_playerListViewController(_ viewController: BRPlayerListViewController, didChangeIndexPathForVisible indexPath: IndexPath)
|
@objc optional func br_playerListViewController(_ viewController: BRPlayerListViewController, didChangeIndexPathForVisible indexPath: IndexPath)
|
||||||
@ -136,9 +132,9 @@ class BRPlayerListViewController: BRViewController {
|
|||||||
|
|
||||||
self.viewModel.isPlaying = true
|
self.viewModel.isPlaying = true
|
||||||
|
|
||||||
// if getDataCount() - viewModel.currentIndexPath.row <= 2 {
|
if (self.collectionView.contentSize.height - self.collectionView.contentOffset.y) / self.contentSize.height <= 3 {
|
||||||
// self.loadMoreData()
|
self.loadMoreData()
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func pause() {
|
func pause() {
|
||||||
@ -364,10 +360,6 @@ extension BRPlayerListViewController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private func loadUpMoreData() {
|
|
||||||
self.delegate?.br_playerViewControllerLoadUpMoreData?(playerViewController: self)
|
|
||||||
}
|
|
||||||
|
|
||||||
private func didChangeIndexPathForVisible() {
|
private func didChangeIndexPathForVisible() {
|
||||||
self.delegate?.br_playerListViewController?(self, didChangeIndexPathForVisible: viewModel.currentIndexPath)
|
self.delegate?.br_playerListViewController?(self, didChangeIndexPathForVisible: viewModel.currentIndexPath)
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
import UIKit
|
import UIKit
|
||||||
|
import LYEmptyView
|
||||||
|
|
||||||
class BRSearchResultView: UIView {
|
class BRSearchResultView: UIView {
|
||||||
|
|
||||||
@ -35,6 +36,7 @@ class BRSearchResultView: UIView {
|
|||||||
collectionView.dataSource = self
|
collectionView.dataSource = self
|
||||||
collectionView.contentInset = .init(top: 0, left: 0, bottom: UIScreen.tabbarSafeBottomMargin + 10, right: 0)
|
collectionView.contentInset = .init(top: 0, left: 0, bottom: UIScreen.tabbarSafeBottomMargin + 10, right: 0)
|
||||||
collectionView.register(BRSearchResultCell.self, forCellWithReuseIdentifier: "cell")
|
collectionView.register(BRSearchResultCell.self, forCellWithReuseIdentifier: "cell")
|
||||||
|
collectionView.ly_emptyView = BREmpty.br_normalEmptyView(image: UIImage(named: "empty_search_image"), title: "kSearchEmptyTitle".localized, detailStr: "kSearchEmptyDetail".localized)
|
||||||
return collectionView
|
return collectionView
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
@ -14,6 +14,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
|
|||||||
|
|
||||||
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
|
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
|
||||||
BRAppTool.appDelegate = self
|
BRAppTool.appDelegate = self
|
||||||
|
BRNetworkStatusManager.manager.startMonitoring()
|
||||||
|
NotificationCenter.default.addObserver(self, selector: #selector(networkStatusDidChangeNotification), name: BRNetworkStatusManager.networkStatusDidChangeNotification, object: nil)
|
||||||
|
|
||||||
BRLoginManager.manager.updateUserInfo(completer: nil)
|
BRLoginManager.manager.updateUserInfo(completer: nil)
|
||||||
|
|
||||||
@ -39,3 +41,11 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extension AppDelegate {
|
||||||
|
@objc private func networkStatusDidChangeNotification() {
|
||||||
|
if BRNetworkStatusManager.manager.isReachable == true {
|
||||||
|
BRLoginManager.manager.updateUserInfo(completer: nil)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
24
BeeReel/Lib/Empty/BREmpty.swift
Normal file
24
BeeReel/Lib/Empty/BREmpty.swift
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
//
|
||||||
|
// BREmpty.swift
|
||||||
|
// BeeReel
|
||||||
|
//
|
||||||
|
// Created by 湖南秦九 on 2025/7/23.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
import LYEmptyView
|
||||||
|
|
||||||
|
class BREmpty: NSObject {
|
||||||
|
|
||||||
|
static func br_normalEmptyView(image: UIImage? = UIImage(named: "empty_normal_image"), title: String? = "kNormalRmptyTitle".localized, detailStr: String? = "kNormalRmptyDetail".localized) -> LYEmptyView {
|
||||||
|
let view = LYEmptyView.empty(with: image, titleStr: title, detailStr: detailStr)
|
||||||
|
view?.titleLabFont = .fontMedium(ofSize: 15)
|
||||||
|
view?.titleLabTextColor = .color1C1C1C()
|
||||||
|
view?.detailLabFont = .fontRegular(ofSize: 12)
|
||||||
|
view?.detailLabTextColor = .color777777()
|
||||||
|
view?.contentViewOffset = -100
|
||||||
|
view?.subViewMargin = 10
|
||||||
|
return view!
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
22
BeeReel/Sources/Assets.xcassets/image/empty_normal_image.imageset/Contents.json
vendored
Normal file
22
BeeReel/Sources/Assets.xcassets/image/empty_normal_image.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "内容为空@2x.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "内容为空@3x.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
BIN
BeeReel/Sources/Assets.xcassets/image/empty_normal_image.imageset/内容为空@2x.png
vendored
Normal file
BIN
BeeReel/Sources/Assets.xcassets/image/empty_normal_image.imageset/内容为空@2x.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 59 KiB |
BIN
BeeReel/Sources/Assets.xcassets/image/empty_normal_image.imageset/内容为空@3x.png
vendored
Normal file
BIN
BeeReel/Sources/Assets.xcassets/image/empty_normal_image.imageset/内容为空@3x.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 117 KiB |
22
BeeReel/Sources/Assets.xcassets/image/empty_search_image.imageset/Contents.json
vendored
Normal file
22
BeeReel/Sources/Assets.xcassets/image/empty_search_image.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "搜索无结果@2x.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "搜索无结果@3x.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
BIN
BeeReel/Sources/Assets.xcassets/image/empty_search_image.imageset/搜索无结果@2x.png
vendored
Normal file
BIN
BeeReel/Sources/Assets.xcassets/image/empty_search_image.imageset/搜索无结果@2x.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 55 KiB |
BIN
BeeReel/Sources/Assets.xcassets/image/empty_search_image.imageset/搜索无结果@3x.png
vendored
Normal file
BIN
BeeReel/Sources/Assets.xcassets/image/empty_search_image.imageset/搜索无结果@3x.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 107 KiB |
@ -122,6 +122,50 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"kNormalRmptyDetail" : {
|
||||||
|
"extractionState" : "manual",
|
||||||
|
"localizations" : {
|
||||||
|
"en" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "Start exploring and add something"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"kNormalRmptyTitle" : {
|
||||||
|
"extractionState" : "manual",
|
||||||
|
"localizations" : {
|
||||||
|
"en" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "Nothing Here Yet"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"kSearchEmptyDetail" : {
|
||||||
|
"extractionState" : "manual",
|
||||||
|
"localizations" : {
|
||||||
|
"en" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "Check spelling or use simpler keywords"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"kSearchEmptyTitle" : {
|
||||||
|
"extractionState" : "manual",
|
||||||
|
"localizations" : {
|
||||||
|
"en" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "No Results Found"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"Last Searched" : {
|
"Last Searched" : {
|
||||||
"extractionState" : "manual",
|
"extractionState" : "manual",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user