From 44a80c5f1e329367ec8616346d6bebebe6da06e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BE=9C=E5=A3=B0=E4=B8=96=E7=BA=AA?= <> Date: Sun, 4 Jan 2026 09:12:50 +0800 Subject: [PATCH] =?UTF-8?q?1.0.5=E6=8F=90=E5=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ReaderHive.xcodeproj/project.pbxproj | 4 +- .../Class/Home/V/NRHomeCoinsPackButton.swift | 4 +- .../Class/Novel/V/NRDetailRechargeView.swift | 109 +++++++++++++----- .../Class/Novel/VM/NRNovelReadViewModel.swift | 1 + .../Source/en.lproj/Localizable.strings | 1 + 5 files changed, 89 insertions(+), 30 deletions(-) diff --git a/ReaderHive.xcodeproj/project.pbxproj b/ReaderHive.xcodeproj/project.pbxproj index adb84ae..48c926c 100644 --- a/ReaderHive.xcodeproj/project.pbxproj +++ b/ReaderHive.xcodeproj/project.pbxproj @@ -3089,7 +3089,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.4; + MARKETING_VERSION = 1.0.5; PRODUCT_BUNDLE_IDENTIFIER = com.lssj.ReaderHive; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -3134,7 +3134,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.4; + MARKETING_VERSION = 1.0.5; PRODUCT_BUNDLE_IDENTIFIER = com.lssj.ReaderHive; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; diff --git a/ReaderHive/Class/Home/V/NRHomeCoinsPackButton.swift b/ReaderHive/Class/Home/V/NRHomeCoinsPackButton.swift index e1ca310..42bd150 100644 --- a/ReaderHive/Class/Home/V/NRHomeCoinsPackButton.swift +++ b/ReaderHive/Class/Home/V/NRHomeCoinsPackButton.swift @@ -35,6 +35,8 @@ class NRHomeCoinsPackButton: UIControl { label.textStartPoint = .init(x: 0, y: 0.5) label.textEndPoint = .init(x: 1, y: 0.5) label.text = "Daily Coins".localized + label.setContentHuggingPriority(.required, for: .horizontal) + label.setContentCompressionResistancePriority(.required, for: .horizontal) return label }() @@ -73,7 +75,7 @@ extension NRHomeCoinsPackButton { make.top.equalToSuperview().offset(2) make.center.equalToSuperview() make.height.equalTo(24) - make.width.equalTo(84) +// make.width.equalTo(84) } textLabel.snp.makeConstraints { make in diff --git a/ReaderHive/Class/Novel/V/NRDetailRechargeView.swift b/ReaderHive/Class/Novel/V/NRDetailRechargeView.swift index 0f2c650..0a0d1af 100644 --- a/ReaderHive/Class/Novel/V/NRDetailRechargeView.swift +++ b/ReaderHive/Class/Novel/V/NRDetailRechargeView.swift @@ -59,23 +59,21 @@ class NRDetailRechargeView: NRPanModalContentView { } } + var price: Int? { + didSet { + priceLabel.text = "\(price ?? 0)" + } + } + private lazy var bgView: UIView = { let view = UIImageView(image: UIImage(named: "bg_image_01")) return view }() - private lazy var coinsBgView: UIView = { - let view = UIView() - view.backgroundColor = .white - view.layer.cornerRadius = 12 - view.layer.masksToBounds = true - return view - }() - private lazy var coinsTitleLabel: UILabel = { let label = UILabel() - label.font = .font(ofSize: 14, weight: .regular) + label.font = .font(ofSize: 12, weight: .regular) label.textColor = .black label.text = "Balance".localized + ":" return label @@ -107,6 +105,36 @@ class NRDetailRechargeView: NRPanModalContentView { return button }() + private lazy var priceTitleLabel: UILabel = { + let label = UILabel() + label.font = .font(ofSize: 12, weight: .regular) + label.textColor = .black + label.text = "Chapter Price".localized + ":" + return label + }() + + private lazy var priceIconView: UIImageView = UIImageView(image: UIImage(named: "coins_icon_04")) + + private lazy var priceLabel: UILabel = { + let label = UILabel() + label.font = .font(ofSize: 14, weight: .bold) + label.textColor = .F_9710_D + label.text = "0" + return label + }() + + private lazy var coinsLineView: UIView = { + let view = UIView() + view.backgroundColor = .black.withAlphaComponent(0.15) + return view + }() + + private lazy var lineView: UIView = { + let view = UIView() + view.backgroundColor = .black.withAlphaComponent(0.15) + return view + }() + private lazy var scrollView: NRScrollView = { let scrollView = NRScrollView() return scrollView @@ -179,11 +207,15 @@ extension NRDetailRechargeView { private func nr_setupUI() { addSubview(bgView) - addSubview(coinsBgView) - coinsBgView.addSubview(coinsTitleLabel) - coinsBgView.addSubview(coinsIconView) - coinsBgView.addSubview(coinsLabel) + addSubview(coinsTitleLabel) + addSubview(coinsIconView) + addSubview(coinsLabel) + addSubview(coinsLineView) + addSubview(priceTitleLabel) + addSubview(priceIconView) + addSubview(priceLabel) addSubview(closeButton) + addSubview(lineView) addSubview(scrollView) scrollView.addSubview(stackView) @@ -191,37 +223,60 @@ extension NRDetailRechargeView { make.left.right.top.equalToSuperview() } - coinsBgView.snp.makeConstraints { make in - make.left.equalToSuperview().offset(16) - make.top.equalToSuperview().offset(16) - make.height.equalTo(24) - } - coinsTitleLabel.snp.makeConstraints { make in - make.centerY.equalToSuperview() - make.left.equalToSuperview().offset(12) + make.centerY.equalTo(closeButton) + make.left.equalToSuperview().offset(16) } coinsIconView.snp.makeConstraints { make in - make.centerY.equalToSuperview() - make.left.equalTo(coinsTitleLabel.snp.right).offset(8) + make.centerY.equalTo(closeButton) + make.left.equalTo(coinsTitleLabel.snp.right).offset(4) } coinsLabel.snp.makeConstraints { make in - make.centerY.equalToSuperview() + make.centerY.equalTo(closeButton) make.left.equalTo(coinsIconView.snp.right).offset(4) - make.right.equalToSuperview().offset(-12) + } + + coinsLineView.snp.makeConstraints { make in + make.centerY.equalTo(closeButton) + make.left.equalTo(coinsLabel.snp.right).offset(8) + make.width.equalTo(1) + make.height.equalTo(12) + } + + priceTitleLabel.snp.makeConstraints { make in + make.centerY.equalTo(closeButton) + make.left.equalTo(coinsLineView.snp.right).offset(8) + } + + priceIconView.snp.makeConstraints { make in + make.centerY.equalTo(closeButton) + make.left.equalTo(priceTitleLabel.snp.right).offset(4) + } + + priceLabel.snp.makeConstraints { make in + make.centerY.equalTo(closeButton) + make.left.equalTo(priceIconView.snp.right).offset(4) } closeButton.snp.makeConstraints { make in - make.centerY.equalTo(coinsBgView) + make.top.equalToSuperview().offset(6) make.right.equalToSuperview().offset(-6) make.width.height.equalTo(44) } + lineView.snp.makeConstraints { make in + make.left.equalToSuperview().offset(16) + make.centerX.equalToSuperview() + make.top.equalToSuperview().offset(52) + make.height.equalTo(1) + } + scrollView.snp.makeConstraints { make in make.left.right.bottom.equalToSuperview() - make.top.equalToSuperview().offset(52) +// make.top.equalToSuperview().offset(52) + make.top.equalTo(lineView.snp.bottom).offset(12) } stackView.snp.makeConstraints { make in diff --git a/ReaderHive/Class/Novel/VM/NRNovelReadViewModel.swift b/ReaderHive/Class/Novel/VM/NRNovelReadViewModel.swift index 3b6f52c..4898b81 100644 --- a/ReaderHive/Class/Novel/VM/NRNovelReadViewModel.swift +++ b/ReaderHive/Class/Novel/VM/NRNovelReadViewModel.swift @@ -191,6 +191,7 @@ extension NRNovelReadViewModel { ]) let view = NRDetailRechargeView() + view.price = catalogModel.coins view.payModel = payModel view.worksId = self.novelId view.chapterId = catalogModel.id diff --git a/ReaderHive/Source/en.lproj/Localizable.strings b/ReaderHive/Source/en.lproj/Localizable.strings index c0a3ca3..b258e95 100644 --- a/ReaderHive/Source/en.lproj/Localizable.strings +++ b/ReaderHive/Source/en.lproj/Localizable.strings @@ -153,6 +153,7 @@ "Later" = "Later"; "Default" = "Default"; "Log in" = "Log in"; +"Chapter Price" = "Chapter Price"; "retain_alert_text" = "Unlock every show you love!"; "logout_alert_text" = "Are you sure you want to log out?";