Commit eb6e6503 authored by Alex朱枝文's avatar Alex朱枝文

会员中心页调整

parent db5f0ae5
......@@ -74,6 +74,7 @@
043671412D64935200E8D9BA /* YHMemberCenterCellContent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 043671402D64935200E8D9BA /* YHMemberCenterCellContent.swift */; };
043671432D66DDB500E8D9BA /* YHMemberCenterInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 043671422D66DDB500E8D9BA /* YHMemberCenterInfo.swift */; };
043671452D66FBEE00E8D9BA /* YHMemberCenterViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 043671442D66FBEE00E8D9BA /* YHMemberCenterViewModel.swift */; };
043671472D6C3ED100E8D9BA /* YHMembershipGrowthGuideView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 043671462D6C3ED100E8D9BA /* YHMembershipGrowthGuideView.swift */; };
045C0F7F2D12CA5F00BD2DC0 /* submit_page_scroll.gif in Resources */ = {isa = PBXBuildFile; fileRef = 045C0F4F2D12CA5E00BD2DC0 /* submit_page_scroll.gif */; };
045C0F802D12CA5F00BD2DC0 /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = 045C0F762D12CA5E00BD2DC0 /* Localizable.xcstrings */; };
045C0F812D12CA5F00BD2DC0 /* img_0.png in Resources */ = {isa = PBXBuildFile; fileRef = 045C0F5E2D12CA5E00BD2DC0 /* img_0.png */; };
......@@ -1316,6 +1317,7 @@
043671402D64935200E8D9BA /* YHMemberCenterCellContent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMemberCenterCellContent.swift; sourceTree = "<group>"; };
043671422D66DDB500E8D9BA /* YHMemberCenterInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMemberCenterInfo.swift; sourceTree = "<group>"; };
043671442D66FBEE00E8D9BA /* YHMemberCenterViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMemberCenterViewModel.swift; sourceTree = "<group>"; };
043671462D6C3ED100E8D9BA /* YHMembershipGrowthGuideView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMembershipGrowthGuideView.swift; sourceTree = "<group>"; };
045C0A142D12CA5E00BD2DC0 /* YHBaseViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHBaseViewController.swift; sourceTree = "<group>"; };
045C0A152D12CA5E00BD2DC0 /* YHBaseViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHBaseViewModel.swift; sourceTree = "<group>"; };
045C0A162D12CA5E00BD2DC0 /* YHNavigationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHNavigationController.swift; sourceTree = "<group>"; };
......@@ -5816,6 +5818,7 @@
04AFEF4A2D5DF3710007A011 /* YHMyUserInfoView.swift */,
04AFEF4C2D5EEF860007A011 /* YHUserVipInfoView.swift */,
048D6ADC2D5EF0A900BC6F4C /* YHMemberCenterHeaderView.swift */,
043671462D6C3ED100E8D9BA /* YHMembershipGrowthGuideView.swift */,
048D6ADE2D5F0FBE00BC6F4C /* YHMemberCenterHeaderBannerCell.swift */,
048D6AE22D6348EF00BC6F4C /* YHMemberCenterCurrentPrivilegeCell.swift */,
0436713A2D643A7A00E8D9BA /* YHMemberCenterMyPrivilegeCell.swift */,
......@@ -7528,6 +7531,7 @@
045C11FC2D12CA5F00BD2DC0 /* YHHKPlaceInfoCell.swift in Sources */,
045C11FD2D12CA5F00BD2DC0 /* YHIncomeRecordUtilType.swift in Sources */,
045C11FE2D12CA5F00BD2DC0 /* YHVideoPlayerControlView.swift in Sources */,
043671472D6C3ED100E8D9BA /* YHMembershipGrowthGuideView.swift in Sources */,
045C11FF2D12CA5F00BD2DC0 /* YHResignCertificateModel.swift in Sources */,
045C12002D12CA5F00BD2DC0 /* YHPrincipleApprovedAlertView.swift in Sources */,
045C12012D12CA5F00BD2DC0 /* YHSchemeTableHeadView.swift in Sources */,
......
......@@ -10,6 +10,11 @@ import FSPagerView
import UIKit
class YHMemberCenterHeaderBannerCell: FSPagerViewCell {
var upgradeButtonEvent: ((_ level: YHMembershipLevel) -> Void)?
var levelButtonEvent: ((_ level: YHMembershipLevel) -> Void)?
private var level: YHMembershipLevel = .normal
private lazy var bannerImagV: UIImageView = {
let imagV: UIImageView = UIImageView()
imagV.contentMode = .scaleAspectFit
......@@ -28,6 +33,7 @@ class YHMemberCenterHeaderBannerCell: FSPagerViewCell {
private lazy var levelButton: UIButton = {
let button = UIButton(type: .custom)
button.titleLabel?.font = UIFont.PFSC_R(ofSize: 13)
button.addTarget(self, action: #selector(levelButtonClicked), for: .touchUpInside)
return button
}()
......@@ -36,6 +42,7 @@ class YHMemberCenterHeaderBannerCell: FSPagerViewCell {
button.titleLabel?.font = UIFont.PFSC_M(ofSize: 12)
button.clipsToBounds = true
button.layer.cornerRadius = 17
button.addTarget(self, action: #selector(upgradeButtonClicked), for: .touchUpInside)
return button
}()
......@@ -133,11 +140,14 @@ class YHMemberCenterHeaderBannerCell: FSPagerViewCell {
}
func setupData(level: YHMembershipLevel, levelString: String, tips: String, upgradeTitle: String, showProgress: Bool, ratioString: String, ratio: CGFloat, showRatio: Bool, showTips: Bool) {
self.level = level
bannerImagV.image = UIImage(named: level.cardIconTitle())
bannerTitleLabel.text = level.description
bannerTitleLabel.textColor = level.levelTitleColor()
levelButton.setTitleColor(level.levelButtonTitleColor(), for: .normal)
levelButton.setTitle(levelString, for: .normal)
levelButton.setImage(UIImage(named: level.levelButtonImageTitle()), for: .normal)
levelButton.iconInRight(with: 0)
countLabel.textColor = level.countTitleColor()
countLabel.text = ratioString
countLabel.isHidden = !showRatio
......@@ -165,6 +175,14 @@ class YHMemberCenterHeaderBannerCell: FSPagerViewCell {
}
}
}
@objc private func upgradeButtonClicked() {
upgradeButtonEvent?(level)
}
@objc private func levelButtonClicked() {
levelButtonEvent?(level)
}
}
fileprivate extension YHMembershipLevel {
......@@ -219,6 +237,15 @@ fileprivate extension YHMembershipLevel {
return UIColor(hexString: "#E0C9AF80")?.withAlphaComponent(0.5)
}
}
func levelButtonImageTitle() -> String {
switch self {
case .normal, .gold, .platinum:
return "arrow_right_white_16"
case .diamond:
return "arrow_right_gold_16"
}
}
func countTitleColor() -> UIColor? {
switch self {
......
......@@ -53,6 +53,8 @@ class YHMemberCenterHeaderView: UIView {
}
var scrollToIndexEvent: ((YHMembershipLevel) -> Void)?
var upgradeButtonEvent: ((_ level: YHMembershipLevel) -> Void)?
var levelButtonEvent: ((_ level: YHMembershipLevel) -> Void)?
private lazy var bannerView: FSPagerView = {
let view = FSPagerView()
......@@ -103,8 +105,8 @@ class YHMemberCenterHeaderView: UIView {
showTips = false
}
case .gold:
countFrom = 0
countTo = 60000
countFrom = 1
countTo = 6001
if memberCenterInfo.currentLevel < level.rawValue {
levelString = "您未达到该等级"
upgradeTitle = "去升级"
......@@ -118,7 +120,7 @@ class YHMemberCenterHeaderView: UIView {
upgradeTitle = "已达成"
tips = "距铂金会员还需\(countTo - memberCenterInfo.growthValue)成长值"
ratioString = "\(memberCenterInfo.growthValue)/(countTo)"
let value = Double(memberCenterInfo.growthValue) / Double(countTo)
let value = Double(memberCenterInfo.growthValue) / Double(countTo - 1)
ratio = value < 0 ? 0 : value
showProgress = true
showRatio = true
......@@ -131,8 +133,8 @@ class YHMemberCenterHeaderView: UIView {
ratio = 0
}
case .platinum:
countFrom = 60000
countTo = 150000
countFrom = 6001
countTo = 15001
if memberCenterInfo.currentLevel < level.rawValue {
levelString = "您未达到该等级"
upgradeTitle = "去升级"
......@@ -145,7 +147,7 @@ class YHMemberCenterHeaderView: UIView {
upgradeTitle = "已达成"
tips = "距钻石会员还需\(countTo - memberCenterInfo.growthValue)成长值"
ratioString = "\(memberCenterInfo.growthValue)/(countTo)"
let value = Double(memberCenterInfo.growthValue) / Double(countTo)
let value = Double(memberCenterInfo.growthValue) / Double(countTo - 1)
ratio = value < 0 ? 0 : value
showProgress = true
showRatio = true
......@@ -158,7 +160,7 @@ class YHMemberCenterHeaderView: UIView {
ratio = 0
}
case .diamond:
countFrom = 150000
countFrom = 15001
countTo = Int.max
if memberCenterInfo.currentLevel < level.rawValue {
levelString = "您未达到该等级"
......@@ -215,6 +217,12 @@ extension YHMemberCenterHeaderView: FSPagerViewDataSource, FSPagerViewDelegate {
if let cell = pagerView.dequeueReusableCell(withReuseIdentifier: "YHMemberCenterHeaderBannerCell", at: index) as? YHMemberCenterHeaderBannerCell {
let model = datas[index]
cell.setupData(level: model.level, levelString: model.levelString, tips: model.tips, upgradeTitle: model.upgradeTitle, showProgress: model.showProgress, ratioString: model.ratioString, ratio: model.ratio, showRatio: model.showRatio, showTips: model.showTips)
cell.levelButtonEvent = { [weak self] level in
self?.levelButtonEvent?(level)
}
cell.upgradeButtonEvent = { [weak self] level in
self?.upgradeButtonEvent?(level)
}
return cell
}
return FSPagerViewCell()
......
//
// YHMembershipGrowthGuideView.swift
// galaxy
//
// Created by alexzzw on 2025/2/24.
// Copyright © 2025 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHMembershipGrowthGuideView: UIView {
var closeButtonEvent: (() -> Void)?
private lazy var topTitleLabel: UILabel = {
let label = UILabel()
label.text = "会员及成长值说明"
label.font = .PFSC_B(ofSize: 17)
label.textColor = .mainTextColor
label.textAlignment = .center
return label
}()
private lazy var closeButton: UIButton = {
let button = UIButton(type: .custom)
button.setImage(UIImage(named: "service_card_close"), for: .normal)
button.addTarget(self, action: #selector(closeButtonClicked), for: .touchUpInside)
return button
}()
private lazy var topLineView: UIView = {
let view = UIView()
view.backgroundColor = UIColor(hexString: "#E9ECF0")
return view
}()
lazy var blackMaskView: UIView = {
let view = UIView()
view.backgroundColor = UIColor(hex: 0x0F1214, alpha: 0.5)
return view
}()
lazy var whiteContentView: UIView = {
let view = UIView()
view.backgroundColor = .white
return view
}()
lazy var myScrollView: UIScrollView = {
let view = UIScrollView()
view.backgroundColor = .clear
view.showsVerticalScrollIndicator = false
view.showsHorizontalScrollIndicator = false
return view
}()
lazy var bkgImageV: UIImageView = {
let imageV = UIImageView()
imageV.image = UIImage(named: "membership_growth_guide")
imageV.contentMode = .scaleAspectFit
imageV.clipsToBounds = true
return imageV
}()
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override init(frame: CGRect) {
super.init(frame: frame)
setupUI()
}
}
extension YHMembershipGrowthGuideView {
static func sheetView() -> YHMembershipGrowthGuideView {
let view = YHMembershipGrowthGuideView(frame: UIScreen.main.bounds)
return view
}
func show() {
UIApplication.shared.yhKeyWindow()?.addSubview(self)
UIView.animate(withDuration: 0.5) {
let whiteHeight = KScreenHeight - k_Height_NavigationtBarAndStatuBar
self.whiteContentView.frame = CGRect(x: 0, y: KScreenHeight - whiteHeight, width: KScreenWidth, height: whiteHeight)
}
}
@objc func dismiss() {
removeFromSuperview()
}
}
private extension YHMembershipGrowthGuideView {
@objc private func closeButtonClicked() {
dismiss()
closeButtonEvent?()
}
func setupUI() {
addSubview(blackMaskView)
addSubview(whiteContentView)
let corner = UIRectCorner(rawValue: UIRectCorner.topLeft.rawValue | UIRectCorner.topRight.rawValue)
let path = UIBezierPath(roundedRect: bounds, byRoundingCorners: corner, cornerRadii: CGSizeMake(kCornerRadius6, kCornerRadius6))
let layer = CAShapeLayer()
layer.frame = whiteContentView.bounds
layer.path = path.cgPath
whiteContentView.layer.mask = layer
whiteContentView.clipsToBounds = true
blackMaskView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
let whiteHeight = KScreenHeight - k_Height_NavigationtBarAndStatuBar
whiteContentView.frame = CGRect(x: 0, y: KScreenHeight, width: KScreenWidth, height: whiteHeight)
whiteContentView.addSubview(topTitleLabel)
whiteContentView.addSubview(closeButton)
whiteContentView.addSubview(topLineView)
topTitleLabel.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.top.equalToSuperview().offset(16)
}
closeButton.snp.makeConstraints { make in
make.centerY.equalTo(topTitleLabel)
make.right.equalToSuperview().offset(-20)
make.width.height.equalTo(24)
}
topLineView.snp.makeConstraints { make in
make.top.equalToSuperview().offset(52)
make.left.equalToSuperview().offset(20)
make.right.equalToSuperview().offset(-20)
}
whiteContentView.addSubview(myScrollView)
myScrollView.snp.makeConstraints { make in
make.top.equalToSuperview().offset(54)
make.left.equalToSuperview()
make.right.equalToSuperview()
make.width.equalTo(KScreenWidth)
make.height.equalTo(whiteHeight - 54)
}
if let _ = UIImage(named: "membership_growth_guide") {
let radio = 558.0 / 333.0
let margin = (375.0 - 333.0) / 2.0
myScrollView.addSubview(bkgImageV)
bkgImageV.snp.makeConstraints { make in
make.top.equalToSuperview()
make.left.equalToSuperview().offset(margin)
make.right.equalToSuperview().offset(-margin)
make.width.equalTo(333.0)
make.height.equalTo(333.0 * radio)
}
myScrollView.contentSize = CGSize(width: KScreenWidth, height: 333.0 * radio)
}
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "arrow_right_gold_16@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "arrow_right_gold_16@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "membership_growth_guide@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "membership_growth_guide@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment