From 17d83f3b7a2101d62e05a594d6cd0854e8cdcf10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BE=9C=E5=A3=B0=E4=B8=96=E7=BA=AA?= <> Date: Thu, 25 Dec 2025 14:50:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ReaderHive/Base/VC/NRViewController.swift | 20 ++++++++ .../Home/V/NRHomeNovelMustReadTodayView.swift | 3 -- .../VC/NRMyListNovelViewController.swift | 25 ++++++++++ .../MyList/VC/NRMyListViewController.swift | 14 ++++++ .../Class/Novel/M/NRReadChapterModel.swift | 2 +- ...NovelDetailHeaderView+NovelCoverInfo.swift | 3 ++ .../Novel/V/NRNovelDetailHeaderView.swift | 2 +- .../Novel/V/NRNovelDetailMoreLikeCell.swift | 1 + .../Novel/V/Reader/NRNovelCatalogCell.swift | 2 + .../V/Reader/NRNovelReadBottomView.swift | 7 ++- .../Novel/V/Reader/NRNovelReadGradeView.swift | 50 +++++++++++++++++-- .../V/Reader/NRNovelReadStarGradeView.swift | 10 ++-- .../V/Reader/NRNovelReaderCatalogView.swift | 3 +- .../NRNovelDetailCatalogViewController.swift | 12 ++--- .../VC/NRNovelDetailViewController.swift | 30 +++++++---- .../NRNovelReaderViewController+Page.swift | 1 + .../VC/Read/NRNovelReaderViewController.swift | 4 +- .../Novel/VM/NRNovelReadViewModel+Data.swift | 11 +++- .../NovelTool/NRNovelReadSetManager.swift | 2 + 19 files changed, 168 insertions(+), 34 deletions(-) diff --git a/ReaderHive/Base/VC/NRViewController.swift b/ReaderHive/Base/VC/NRViewController.swift index 7d64b23..bb87a55 100644 --- a/ReaderHive/Base/VC/NRViewController.swift +++ b/ReaderHive/Base/VC/NRViewController.swift @@ -16,6 +16,10 @@ class NRViewController: UIViewController { var didScrollCallback: ((_ : UIScrollView) -> Void)? lazy var nr_isEditing = false + + private(set) var isViewDidAppear = false + ///是否进入过 + private(set) var enteredViewDidAppear = false lazy var backgroundImageView: UIImageView = { let imageView = UIImageView(image: UIImage(named: "bg_image_01")) @@ -51,6 +55,22 @@ class NRViewController: UIViewController { } } + override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + isViewDidAppear = true + enteredViewDidAppear = true + } + + override func viewWillDisappear(_ animated: Bool) { + super.viewWillDisappear(animated) + isViewDidAppear = false + } + + override func viewDidDisappear(_ animated: Bool) { + super.viewDidDisappear(animated) + isViewDidAppear = false + } + func handleHeaderRefresh(_ completer: (() -> Void)?) { completer?() diff --git a/ReaderHive/Class/Home/V/NRHomeNovelMustReadTodayView.swift b/ReaderHive/Class/Home/V/NRHomeNovelMustReadTodayView.swift index 493d2fb..3d5a905 100644 --- a/ReaderHive/Class/Home/V/NRHomeNovelMustReadTodayView.swift +++ b/ReaderHive/Class/Home/V/NRHomeNovelMustReadTodayView.swift @@ -86,7 +86,4 @@ extension NRHomeNovelMustReadTodayView: FSPagerViewDataSource, FSPagerViewDelega vc.novelId = dataArr[index].id ?? "" self.viewController?.navigationController?.pushViewController(vc, animated: true) } - - // 如果需要像之前的 UICollectionViewContentInset 一样在两边留白,FSPagerView 的处理方式通常是调整 itemSize 和 transformer - // 或者直接在布局层面控制。在这里我们通过 transform 效果或者间距来实现类似感观。 } diff --git a/ReaderHive/Class/MyList/VC/NRMyListNovelViewController.swift b/ReaderHive/Class/MyList/VC/NRMyListNovelViewController.swift index 70570f4..98b5e03 100644 --- a/ReaderHive/Class/MyList/VC/NRMyListNovelViewController.swift +++ b/ReaderHive/Class/MyList/VC/NRMyListNovelViewController.swift @@ -21,6 +21,8 @@ class NRMyListNovelViewController: NRViewController { lazy var dataArr: [NRNovelModel] = [] lazy var page = 1 + private var isNeedUpdate = false + lazy var collectionViewLayout: UICollectionViewFlowLayout = { let itemWidth = (UIScreen.width - 32 - 40) / 3 let itemHeight = 150 / 100 * itemWidth + 68 @@ -49,17 +51,34 @@ class NRMyListNovelViewController: NRViewController { return collectionView }() + @MainActor deinit { + NotificationCenter.default.removeObserver(self) + } + + override func viewDidLoad() { super.viewDidLoad() self.backgroundImageView.isHidden = true self.view.backgroundColor = .clear + NotificationCenter.default.addObserver(self, selector: #selector(updateCollectStateNotification), name: NRNovelAPI.updateCollectStateNotification, object: nil) + + nr_setupUI() Task { await requestDataArr(page: 1) } } + override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + if isNeedUpdate { + Task { + await requestDataArr(page: 1) + } + } + } + override func handleHeaderRefresh(_ completer: (() -> Void)?) { Task { await requestDataArr(page: 1) @@ -73,6 +92,12 @@ class NRMyListNovelViewController: NRViewController { self.collectionView.nr_endFooterRefreshing() } } + + @objc private func updateCollectStateNotification() { + if !isViewDidAppear { + isNeedUpdate = true + } + } } diff --git a/ReaderHive/Class/MyList/VC/NRMyListViewController.swift b/ReaderHive/Class/MyList/VC/NRMyListViewController.swift index 40947c0..4264a88 100644 --- a/ReaderHive/Class/MyList/VC/NRMyListViewController.swift +++ b/ReaderHive/Class/MyList/VC/NRMyListViewController.swift @@ -20,6 +20,14 @@ class NRMyListViewController: NRViewController { lazy var novelVC = NRMyListNovelViewController() + lazy var titleLabel: UILabel = { + let label = UILabel() + label.font = .font(ofSize: 16, weight: .semibold) + label.textColor = .black + label.text = "My List".localized + return label + }() + lazy var editButton: UIButton = { let button = UIButton(type: .custom, primaryAction: UIAction(handler: { [weak self] _ in guard let self = self else { return } @@ -53,10 +61,16 @@ class NRMyListViewController: NRViewController { extension NRMyListViewController { private func nr_setupUI() { + view.addSubview(titleLabel) view.addSubview(editButton) addChild(novelVC) view.addSubview(novelVC.view) + titleLabel.snp.makeConstraints { make in + make.centerY.equalTo(editButton) + make.left.equalToSuperview().offset(16) + } + editButton.snp.makeConstraints { make in make.right.equalToSuperview().offset(-6) make.top.equalToSuperview().offset(UIScreen.safeTop) diff --git a/ReaderHive/Class/Novel/M/NRReadChapterModel.swift b/ReaderHive/Class/Novel/M/NRReadChapterModel.swift index df3c4ca..26469e9 100644 --- a/ReaderHive/Class/Novel/M/NRReadChapterModel.swift +++ b/ReaderHive/Class/Novel/M/NRReadChapterModel.swift @@ -73,7 +73,7 @@ class NRReadChapterModel: NSObject, SmartCodable { ///解析一个空白页面 func parserEmpty(_ text: String) { - fullContent = NSMutableAttributedString(string: "\n\n\n\n\n" + text, attributes: NRNovelReadSetManager.manager.attributes(isTitle: false)) + fullContent = NSMutableAttributedString(string: "\n\n\n\n\n\n\n" + text, attributes: NRNovelReadSetManager.manager.emptyAttributes()) let pageModel = NRReadPageModel() pageModel.content = fullContent diff --git a/ReaderHive/Class/Novel/V/NRNovelDetailHeaderView+NovelCoverInfo.swift b/ReaderHive/Class/Novel/V/NRNovelDetailHeaderView+NovelCoverInfo.swift index d0550c1..5abc741 100644 --- a/ReaderHive/Class/Novel/V/NRNovelDetailHeaderView+NovelCoverInfo.swift +++ b/ReaderHive/Class/Novel/V/NRNovelDetailHeaderView+NovelCoverInfo.swift @@ -60,6 +60,8 @@ extension NRNovelDetailHeaderView { let label = UILabel() label.font = .font(ofSize: 14, weight: .medium) label.textColor = .white + label.numberOfLines = 0 + label.textAlignment = .center return label }() @@ -101,6 +103,7 @@ extension NRNovelDetailHeaderView { } stackView.snp.makeConstraints { make in + make.top.equalTo(nameLabel.snp.bottom).offset(12) make.centerX.equalToSuperview() make.bottom.equalToSuperview().offset(-16) } diff --git a/ReaderHive/Class/Novel/V/NRNovelDetailHeaderView.swift b/ReaderHive/Class/Novel/V/NRNovelDetailHeaderView.swift index d153ab7..087142e 100644 --- a/ReaderHive/Class/Novel/V/NRNovelDetailHeaderView.swift +++ b/ReaderHive/Class/Novel/V/NRNovelDetailHeaderView.swift @@ -269,7 +269,7 @@ extension NRNovelDetailHeaderView { coverInfoView.snp.makeConstraints { make in make.left.centerX.equalToSuperview() make.top.equalToSuperview().offset(UIScreen.navBarHeight) - make.height.equalTo(240) +// make.height.equalTo(240) } contentView.snp.makeConstraints { make in diff --git a/ReaderHive/Class/Novel/V/NRNovelDetailMoreLikeCell.swift b/ReaderHive/Class/Novel/V/NRNovelDetailMoreLikeCell.swift index 1976cf6..eaba5d0 100644 --- a/ReaderHive/Class/Novel/V/NRNovelDetailMoreLikeCell.swift +++ b/ReaderHive/Class/Novel/V/NRNovelDetailMoreLikeCell.swift @@ -125,6 +125,7 @@ extension NRNovelDetailMoreLikeCell { categoryView.snp.makeConstraints { make in make.left.equalToSuperview() + make.right.lessThanOrEqualToSuperview() make.bottom.equalToSuperview() } diff --git a/ReaderHive/Class/Novel/V/Reader/NRNovelCatalogCell.swift b/ReaderHive/Class/Novel/V/Reader/NRNovelCatalogCell.swift index 8d618ce..936ecac 100644 --- a/ReaderHive/Class/Novel/V/Reader/NRNovelCatalogCell.swift +++ b/ReaderHive/Class/Novel/V/Reader/NRNovelCatalogCell.swift @@ -30,6 +30,7 @@ class NRNovelCatalogCell: NRTableViewCell { private lazy var titleLabel: UILabel = { let label = UILabel() label.font = .font(ofSize: 12, weight: .regular) + label.numberOfLines = 0 return label }() @@ -68,6 +69,7 @@ extension NRNovelCatalogCell { contentView.addSubview(lockImageView) titleLabel.snp.makeConstraints { make in + make.top.equalToSuperview().offset(14) make.centerY.equalToSuperview() make.left.equalToSuperview().offset(16) make.right.lessThanOrEqualToSuperview().offset(-70) diff --git a/ReaderHive/Class/Novel/V/Reader/NRNovelReadBottomView.swift b/ReaderHive/Class/Novel/V/Reader/NRNovelReadBottomView.swift index e35bb5f..4b9e044 100644 --- a/ReaderHive/Class/Novel/V/Reader/NRNovelReadBottomView.swift +++ b/ReaderHive/Class/Novel/V/Reader/NRNovelReadBottomView.swift @@ -84,7 +84,12 @@ class NRNovelReadBottomView: UIView { lazy var nextButton: UIButton = { let button = UIButton(type: .custom, primaryAction: UIAction(handler: { [weak self] _ in guard let self = self else { return } - self.viewModel?.skipToNextChapter() + guard let (catalogModel, _) = self.viewModel?.getCurrentPageData() else { return } + if catalogModel?.is_lock != true { + self.viewModel?.skipToNextChapter() + } else { + self.viewModel?.openRechargeView() + } })) button.titleLabel?.font = .font(ofSize: 12, weight: .regular) button.setTitle("Next".localized, for: .normal) diff --git a/ReaderHive/Class/Novel/V/Reader/NRNovelReadGradeView.swift b/ReaderHive/Class/Novel/V/Reader/NRNovelReadGradeView.swift index 3830980..50e123a 100644 --- a/ReaderHive/Class/Novel/V/Reader/NRNovelReadGradeView.swift +++ b/ReaderHive/Class/Novel/V/Reader/NRNovelReadGradeView.swift @@ -9,6 +9,7 @@ import UIKit import HWPanModal import SnapKit import Cosmos +import YYCategories class NRNovelReadGradeView: NRPanModalContentView { @@ -37,6 +38,28 @@ class NRNovelReadGradeView: NRPanModalContentView { return imageView }() + private lazy var moreButton: UIControl = { + let button = UIControl() + button.addAction(UIAction(handler: { [weak self] _ in + guard let self = self else { return } + self.dismiss(animated: true) { } + let nav = NRTool.topViewController?.navigationController + guard let vcArr = nav?.viewControllers, vcArr.count > 0 else { return } + + if vcArr.count > 1, vcArr[vcArr.count - 2].isKind(of: NRNovelDetailViewController.self) { + var newVCArr = vcArr + newVCArr.removeLast() + nav?.setViewControllers(newVCArr, animated: true) + } else { + let vc = NRNovelDetailViewController() + vc.novelId = self.model?.id ?? "" + nav?.pushViewController(vc, animated: true) + } + + }), for: .touchUpInside) + return button + }() + private lazy var nameLabel: UILabel = { let label = UILabel() label.font = .font(ofSize: 14, weight: .medium) @@ -44,6 +67,13 @@ class NRNovelReadGradeView: NRPanModalContentView { return label }() + private lazy var indicatorImageView: UIImageView = { + let imageView = UIImageView(image: UIImage(named: "arrow_right_icon_04")) + imageView.setContentHuggingPriority(.required, for: .horizontal) + imageView.setContentCompressionResistancePriority(.required, for: .horizontal) + return imageView + }() + private lazy var starView: NRStarGradeView = { let view = NRStarGradeView() return view @@ -130,7 +160,9 @@ class NRNovelReadGradeView: NRPanModalContentView { extension NRNovelReadGradeView { private func nr_setupUI() { addSubview(coverImageView) - addSubview(nameLabel) + addSubview(moreButton) + moreButton.addSubview(nameLabel) + moreButton.addSubview(indicatorImageView) addSubview(starView) addSubview(categoryView) addSubview(gradeView) @@ -142,10 +174,22 @@ extension NRNovelReadGradeView { make.height.equalTo(90) } - nameLabel.snp.makeConstraints { make in + moreButton.snp.makeConstraints { make in make.top.equalTo(coverImageView).offset(8) make.left.equalTo(coverImageView.snp.right).offset(12) - make.right.lessThanOrEqualToSuperview().offset(-16) + make.right.equalToSuperview().offset(-16) + } + + nameLabel.snp.makeConstraints { make in + make.left.equalToSuperview() + make.centerY.equalToSuperview() + make.top.equalToSuperview() + make.right.lessThanOrEqualTo(indicatorImageView.snp.left).offset(-10) + } + + indicatorImageView.snp.makeConstraints { make in + make.centerY.equalToSuperview() + make.right.equalToSuperview() } starView.snp.makeConstraints { make in diff --git a/ReaderHive/Class/Novel/V/Reader/NRNovelReadStarGradeView.swift b/ReaderHive/Class/Novel/V/Reader/NRNovelReadStarGradeView.swift index 03ffb7b..ffca79b 100644 --- a/ReaderHive/Class/Novel/V/Reader/NRNovelReadStarGradeView.swift +++ b/ReaderHive/Class/Novel/V/Reader/NRNovelReadStarGradeView.swift @@ -22,13 +22,13 @@ class NRNovelReadStarGradeView: UIView { if self_rate < 0 { label.text = "Enjoying this book?".localized gradeView.grade = 0 - gradeView.updateOnTouch = true - gradeView.fillMode = .full +// gradeView.updateOnTouch = true +// gradeView.fillMode = .full } else { label.text = "My Rate:##".localizedReplace(text: NSNumber(value: self_rate).toString(maximumFractionDigits: 1, minimumFractionDigits: 1)) gradeView.grade = self_rate / 2 - gradeView.updateOnTouch = false - gradeView.fillMode = .precise +// gradeView.updateOnTouch = false +// gradeView.fillMode = .precise } } } @@ -44,7 +44,7 @@ class NRNovelReadStarGradeView: UIView { let view = NRStarGradeView() view.filledImage = UIImage(named: "star_icon_04") view.emptyImage = UIImage(named: "star_icon_05") - view.updateOnTouch = false + view.updateOnTouch = true view.fillMode = .full view.didFinishTouching = self.didFinishTouchingGrade return view diff --git a/ReaderHive/Class/Novel/V/Reader/NRNovelReaderCatalogView.swift b/ReaderHive/Class/Novel/V/Reader/NRNovelReaderCatalogView.swift index 2c738ad..bfe8f79 100644 --- a/ReaderHive/Class/Novel/V/Reader/NRNovelReaderCatalogView.swift +++ b/ReaderHive/Class/Novel/V/Reader/NRNovelReaderCatalogView.swift @@ -56,6 +56,7 @@ class NRNovelReaderCatalogView: UIView { let label = UILabel() label.font = .font(ofSize: 14, weight: .medium) label.textColor = .black + label.numberOfLines = 0 return label }() @@ -84,7 +85,7 @@ class NRNovelReaderCatalogView: UIView { tableView.delegate = self tableView.dataSource = self tableView.separatorStyle = .none - tableView.rowHeight = 44 +// tableView.rowHeight = 44 tableView.contentInset = .init(top: 0, left: 0, bottom: UIScreen.safeBottom, right: 0) tableView.register(NRNovelCatalogCell.self, forCellReuseIdentifier: "cell") return tableView diff --git a/ReaderHive/Class/Novel/VC/NRNovelDetailCatalogViewController.swift b/ReaderHive/Class/Novel/VC/NRNovelDetailCatalogViewController.swift index 1c9ec00..18e7daf 100644 --- a/ReaderHive/Class/Novel/VC/NRNovelDetailCatalogViewController.swift +++ b/ReaderHive/Class/Novel/VC/NRNovelDetailCatalogViewController.swift @@ -22,7 +22,6 @@ class NRNovelDetailCatalogViewController: NRViewController { lazy var dataArr: [NRReadChapterCatalogModel] = [] - var isViewDidAppear = false private lazy var lineView: UIView = { @@ -41,6 +40,7 @@ class NRNovelDetailCatalogViewController: NRViewController { let label = UILabel() label.font = .font(ofSize: 14, weight: .medium) label.textColor = .black + label.numberOfLines = 0 return label }() @@ -56,7 +56,7 @@ class NRNovelDetailCatalogViewController: NRViewController { tableView.delegate = self tableView.dataSource = self tableView.separatorStyle = .none - tableView.rowHeight = 44 +// tableView.rowHeight = 44 tableView.contentInset = .init(top: 0, left: 0, bottom: UIScreen.safeBottom, right: 0) tableView.register(NRNovelCatalogCell.self, forCellReuseIdentifier: "cell") return tableView @@ -83,15 +83,13 @@ class NRNovelDetailCatalogViewController: NRViewController { } override func viewDidAppear(_ animated: Bool) { - super.viewDidAppear(animated) - - if isViewDidAppear { + if enteredViewDidAppear { Task { await requestDataArr() } - } else { - isViewDidAppear = true } + super.viewDidAppear(animated) + } } diff --git a/ReaderHive/Class/Novel/VC/NRNovelDetailViewController.swift b/ReaderHive/Class/Novel/VC/NRNovelDetailViewController.swift index 0154feb..1938f6e 100644 --- a/ReaderHive/Class/Novel/VC/NRNovelDetailViewController.swift +++ b/ReaderHive/Class/Novel/VC/NRNovelDetailViewController.swift @@ -23,7 +23,6 @@ class NRNovelDetailViewController: NRViewController { private var navigationStyleScale: CGFloat = 0 - private lazy var isViewDidAppear = false lazy var coverBgImageView: NRImageView = { let imageView = NRImageView() @@ -70,6 +69,7 @@ class NRNovelDetailViewController: NRViewController { @MainActor deinit { recommandListView.removeObserver(self, forKeyPath: "contentSize") + NotificationCenter.default.removeObserver(self) } override func viewDidLoad() { @@ -77,6 +77,8 @@ class NRNovelDetailViewController: NRViewController { self.edgesForExtendedLayout = [.top] self.view.backgroundColor = .white + NotificationCenter.default.addObserver(self, selector: #selector(updateCollectStateNotification), name: NRNovelAPI.updateCollectStateNotification, object: nil) + recommandListView.addObserver(self, forKeyPath: "contentSize", context: nil) nr_setupUI() @@ -98,15 +100,13 @@ class NRNovelDetailViewController: NRViewController { } override func viewDidAppear(_ animated: Bool) { - super.viewDidAppear(animated) - - if !isViewDidAppear { - isViewDidAppear = true - } else { + if enteredViewDidAppear { Task { await updateData() } } + + super.viewDidAppear(animated) } override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { @@ -133,6 +133,15 @@ class NRNovelDetailViewController: NRViewController { } } + @objc private func updateCollectStateNotification(sender: Notification) { + guard let userInfo = sender.userInfo else { return } + guard let id = userInfo["id"] as? String else { return } + guard id == self.novelId else { return } + + Task { + await updateDetail() + } + } } @@ -263,14 +272,17 @@ extension NRNovelDetailViewController { } extension NRNovelDetailViewController { - private func updateData() async { - + + private func updateDetail() async { await self.viewModel.requestDetailData() self.coverBgImageView.nr_setImage(self.viewModel.novelModel?.image_url) self.headerView.model = self.viewModel.novelModel + } + + private func updateData() async { + await self.updateDetail() await self.viewModel.requestRecommandData() self.recommandVC.dataArr = self.viewModel.recommandDataArr ?? [] - } } diff --git a/ReaderHive/Class/Novel/VC/Read/NRNovelReaderViewController+Page.swift b/ReaderHive/Class/Novel/VC/Read/NRNovelReaderViewController+Page.swift index 8090427..afe7989 100644 --- a/ReaderHive/Class/Novel/VC/Read/NRNovelReaderViewController+Page.swift +++ b/ReaderHive/Class/Novel/VC/Read/NRNovelReaderViewController+Page.swift @@ -159,6 +159,7 @@ extension NRNovelReaderViewController { let (currentCatalogModel, _) = self.viewModel.getCurrentPageData() if currentCatalogModel?.is_lock == true { + self.viewModel.openRechargeView() return nil } else { let (catalogModel, pageModel) = self.viewModel.getBelowPageData() diff --git a/ReaderHive/Class/Novel/VC/Read/NRNovelReaderViewController.swift b/ReaderHive/Class/Novel/VC/Read/NRNovelReaderViewController.swift index 99404e6..d6b0c6c 100644 --- a/ReaderHive/Class/Novel/VC/Read/NRNovelReaderViewController.swift +++ b/ReaderHive/Class/Novel/VC/Read/NRNovelReaderViewController.swift @@ -212,7 +212,9 @@ extension NRNovelReaderViewController { await self.viewModel.requestChapterData(currentCatalogModel) //校验索引,避免越界 - self.viewModel.checkCurrentIndexPath() + self.viewModel.checkCurrentIndexPath(haveText: true) + + self.reloadData() NRHud.dismiss() diff --git a/ReaderHive/Class/Novel/VM/NRNovelReadViewModel+Data.swift b/ReaderHive/Class/Novel/VM/NRNovelReadViewModel+Data.swift index 24bc838..84b07fe 100644 --- a/ReaderHive/Class/Novel/VM/NRNovelReadViewModel+Data.swift +++ b/ReaderHive/Class/Novel/VM/NRNovelReadViewModel+Data.swift @@ -81,7 +81,7 @@ extension NRNovelReadViewModel { $0.parserAllData() } - self.checkCurrentIndexPath() + self.checkCurrentIndexPath(haveText: true) if let vc = self.vc?.getCurrentReadController() { self.vc?.setViewController(displayController: vc, isAbove: false, animated: false, dismissMenu: dismissMenu) @@ -90,7 +90,7 @@ extension NRNovelReadViewModel { ///检查当前索引是否合法,不合法修改至合法 ///主要用于更新全部数据 - func checkCurrentIndexPath() { + func checkCurrentIndexPath(haveText: Bool = false) { var currentRow = self.currentPageIndexPath.row var currentSection = self.currentPageIndexPath.section @@ -104,6 +104,13 @@ extension NRNovelReadViewModel { if listCount <= currentRow, listCount > 0 { currentRow = listCount - 1 } + if haveText { + let currentPage = catalogModel.chapterModel?.pageList?[currentRow] + if currentPage?.pageType != .textPart { + currentRow = currentRow - 1 + } + } + self.currentPageIndexPath = IndexPath(row: currentRow, section: currentSection) } diff --git a/ReaderHive/Libs/NovelTool/NRNovelReadSetManager.swift b/ReaderHive/Libs/NovelTool/NRNovelReadSetManager.swift index eedebce..ff2d127 100644 --- a/ReaderHive/Libs/NovelTool/NRNovelReadSetManager.swift +++ b/ReaderHive/Libs/NovelTool/NRNovelReadSetManager.swift @@ -185,7 +185,9 @@ class NRNovelReadSetManager: NSObject { paragraphStyle.alignment = .center return [.font: self.textFont, .paragraphStyle: paragraphStyle] + } + }