Commit 79925724 authored by Steven杜宇's avatar Steven杜宇

// 签到成功页

parent 7fd12ff1
......@@ -3,7 +3,7 @@
archiveVersion = 1;
classes = {
};
objectVersion = 60;
objectVersion = 70;
objects = {
/* Begin PBXBuildFile section */
......@@ -1269,6 +1269,15 @@
04B00FC72D9A420F00F640C5 /* YHMakePlanPriceAlertView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04B00FB82D9A420F00F640C5 /* YHMakePlanPriceAlertView.swift */; };
04B00FC82D9A420F00F640C5 /* YHMakePlanCusttomHeadView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04B00FB62D9A420F00F640C5 /* YHMakePlanCusttomHeadView.swift */; };
04B00FCA2D9AAD6100F640C5 /* YHMakePlanTopView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04B00FC92D9AAD6100F640C5 /* YHMakePlanTopView.swift */; };
04B30B7B2E86307C004E4B12 /* YHNameCardHomePageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04B30B7A2E86307C004E4B12 /* YHNameCardHomePageViewController.swift */; };
04B30B8C2E869717004E4B12 /* YHGrayCommonAlertView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04B30B8B2E869717004E4B12 /* YHGrayCommonAlertView.swift */; };
04B30B8E2E88C837004E4B12 /* YHNameCardDynamicViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04B30B8D2E88C837004E4B12 /* YHNameCardDynamicViewController.swift */; };
04B30B902E88CA0B004E4B12 /* YHNameCardDynamicCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04B30B8F2E88CA0B004E4B12 /* YHNameCardDynamicCell.swift */; };
04B30B982E891CF3004E4B12 /* YHContactViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04B30B972E891CF3004E4B12 /* YHContactViewModel.swift */; };
04B681462E9E20FC007DF8D1 /* YHSignActivityInfoCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04B681452E9E20FC007DF8D1 /* YHSignActivityInfoCell.swift */; };
04B681482E9E2395007DF8D1 /* YHActivitySignSuccessViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04B681472E9E2395007DF8D1 /* YHActivitySignSuccessViewController.swift */; };
04B6814A2E9E27DC007DF8D1 /* YHSignSuccessHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04B681492E9E27DC007DF8D1 /* YHSignSuccessHeaderView.swift */; };
04B6814C2E9E2862007DF8D1 /* YHSignPrizeCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04B6814B2E9E2862007DF8D1 /* YHSignPrizeCell.swift */; };
04C0ED6A2E7BAC2D00B0D182 /* LBXScanView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04C0ED652E7BAC2D00B0D182 /* LBXScanView.swift */; };
04C0ED6B2E7BAC2D00B0D182 /* LBXScanViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04C0ED662E7BAC2D00B0D182 /* LBXScanViewController.swift */; };
04C0ED6C2E7BAC2D00B0D182 /* LBXScanWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04C0ED682E7BAC2D00B0D182 /* LBXScanWrapper.swift */; };
......@@ -1277,11 +1286,6 @@
04C0ED6F2E7BAC2D00B0D182 /* LBXScanNetAnimation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04C0ED642E7BAC2D00B0D182 /* LBXScanNetAnimation.swift */; };
04C0ED702E7BAC2D00B0D182 /* LBXScanLineAnimation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04C0ED632E7BAC2D00B0D182 /* LBXScanLineAnimation.swift */; };
04C0ED7C2E7BEF7800B0D182 /* YHScanViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04C0ED7B2E7BEF7800B0D182 /* YHScanViewController.swift */; };
04B30B7B2E86307C004E4B12 /* YHNameCardHomePageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04B30B7A2E86307C004E4B12 /* YHNameCardHomePageViewController.swift */; };
04B30B8C2E869717004E4B12 /* YHGrayCommonAlertView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04B30B8B2E869717004E4B12 /* YHGrayCommonAlertView.swift */; };
04B30B8E2E88C837004E4B12 /* YHNameCardDynamicViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04B30B8D2E88C837004E4B12 /* YHNameCardDynamicViewController.swift */; };
04B30B902E88CA0B004E4B12 /* YHNameCardDynamicCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04B30B8F2E88CA0B004E4B12 /* YHNameCardDynamicCell.swift */; };
04B30B982E891CF3004E4B12 /* YHContactViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04B30B972E891CF3004E4B12 /* YHContactViewModel.swift */; };
04D4EC312E839C1000B0329B /* YHCircleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04D4EC302E839C1000B0329B /* YHCircleViewController.swift */; };
04D4EC332E839C2B00B0329B /* YHResourceViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04D4EC322E839C2B00B0329B /* YHResourceViewController.swift */; };
04D4EC462E83D11500B0329B /* YHCircleCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04D4EC452E83D11500B0329B /* YHCircleCollectionViewCell.swift */; };
......@@ -2657,6 +2661,15 @@
04B00FBA2D9A420F00F640C5 /* YHMakePlanShareAlertView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMakePlanShareAlertView.swift; sourceTree = "<group>"; };
04B00FBB2D9A420F00F640C5 /* YHMakePlanStateHeadView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMakePlanStateHeadView.swift; sourceTree = "<group>"; };
04B00FC92D9AAD6100F640C5 /* YHMakePlanTopView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMakePlanTopView.swift; sourceTree = "<group>"; };
04B30B7A2E86307C004E4B12 /* YHNameCardHomePageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHNameCardHomePageViewController.swift; sourceTree = "<group>"; };
04B30B8B2E869717004E4B12 /* YHGrayCommonAlertView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGrayCommonAlertView.swift; sourceTree = "<group>"; };
04B30B8D2E88C837004E4B12 /* YHNameCardDynamicViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHNameCardDynamicViewController.swift; sourceTree = "<group>"; };
04B30B8F2E88CA0B004E4B12 /* YHNameCardDynamicCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHNameCardDynamicCell.swift; sourceTree = "<group>"; };
04B30B972E891CF3004E4B12 /* YHContactViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHContactViewModel.swift; sourceTree = "<group>"; };
04B681452E9E20FC007DF8D1 /* YHSignActivityInfoCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHSignActivityInfoCell.swift; sourceTree = "<group>"; };
04B681472E9E2395007DF8D1 /* YHActivitySignSuccessViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHActivitySignSuccessViewController.swift; sourceTree = "<group>"; };
04B681492E9E27DC007DF8D1 /* YHSignSuccessHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHSignSuccessHeaderView.swift; sourceTree = "<group>"; };
04B6814B2E9E2862007DF8D1 /* YHSignPrizeCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHSignPrizeCell.swift; sourceTree = "<group>"; };
04C0ED622E7BAC2D00B0D182 /* LBXPermissions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LBXPermissions.swift; sourceTree = "<group>"; };
04C0ED632E7BAC2D00B0D182 /* LBXScanLineAnimation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LBXScanLineAnimation.swift; sourceTree = "<group>"; };
04C0ED642E7BAC2D00B0D182 /* LBXScanNetAnimation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LBXScanNetAnimation.swift; sourceTree = "<group>"; };
......@@ -2665,11 +2678,6 @@
04C0ED672E7BAC2D00B0D182 /* LBXScanViewStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LBXScanViewStyle.swift; sourceTree = "<group>"; };
04C0ED682E7BAC2D00B0D182 /* LBXScanWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LBXScanWrapper.swift; sourceTree = "<group>"; };
04C0ED7B2E7BEF7800B0D182 /* YHScanViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHScanViewController.swift; sourceTree = "<group>"; };
04B30B7A2E86307C004E4B12 /* YHNameCardHomePageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHNameCardHomePageViewController.swift; sourceTree = "<group>"; };
04B30B8B2E869717004E4B12 /* YHGrayCommonAlertView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGrayCommonAlertView.swift; sourceTree = "<group>"; };
04B30B8D2E88C837004E4B12 /* YHNameCardDynamicViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHNameCardDynamicViewController.swift; sourceTree = "<group>"; };
04B30B8F2E88CA0B004E4B12 /* YHNameCardDynamicCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHNameCardDynamicCell.swift; sourceTree = "<group>"; };
04B30B972E891CF3004E4B12 /* YHContactViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHContactViewModel.swift; sourceTree = "<group>"; };
04D4EC302E839C1000B0329B /* YHCircleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHCircleViewController.swift; sourceTree = "<group>"; };
04D4EC322E839C2B00B0329B /* YHResourceViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHResourceViewController.swift; sourceTree = "<group>"; };
04D4EC452E83D11500B0329B /* YHCircleCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHCircleCollectionViewCell.swift; sourceTree = "<group>"; };
......@@ -2741,7 +2749,7 @@
/* End PBXFileReference section */
/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */
043F0ED92E02A60C003354EB /* Exceptions for "yinheReplayExt" folder in "yinheReplayExt" target */ = {
043F0ED92E02A60C003354EB /* PBXFileSystemSynchronizedBuildFileExceptionSet */ = {
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
membershipExceptions = (
Info.plist,
......@@ -2751,18 +2759,7 @@
/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */
/* Begin PBXFileSystemSynchronizedRootGroup section */
043F0ECD2E02A60C003354EB /* yinheReplayExt */ = {
isa = PBXFileSystemSynchronizedRootGroup;
exceptions = (
043F0ED92E02A60C003354EB /* Exceptions for "yinheReplayExt" folder in "yinheReplayExt" target */,
);
explicitFileTypes = {
};
explicitFolders = (
);
path = yinheReplayExt;
sourceTree = "<group>";
};
043F0ECD2E02A60C003354EB /* yinheReplayExt */ = {isa = PBXFileSystemSynchronizedRootGroup; exceptions = (043F0ED92E02A60C003354EB /* PBXFileSystemSynchronizedBuildFileExceptionSet */, ); explicitFileTypes = {}; explicitFolders = (); path = yinheReplayExt; sourceTree = "<group>"; };
/* End PBXFileSystemSynchronizedRootGroup section */
/* Begin PBXFrameworksBuildPhase section */
......@@ -3245,6 +3242,7 @@
045C0A672D12CA5E00BD2DC0 /* YHActivityListViewController.swift */,
045C0A682D12CA5E00BD2DC0 /* YHActivityTravelViewController.swift */,
045C0A692D12CA5E00BD2DC0 /* YHApplyActivityResultViewController.swift */,
04B681472E9E2395007DF8D1 /* YHActivitySignSuccessViewController.swift */,
);
path = C;
sourceTree = "<group>";
......@@ -3278,6 +3276,9 @@
045C0A7C2D12CA5E00BD2DC0 /* YHActivityTravelitemView.swift */,
045C0A7D2D12CA5E00BD2DC0 /* YHActivityTwoItemView.swift */,
045C0A7E2D12CA5E00BD2DC0 /* YHApplyActivityAlert.swift */,
04B681452E9E20FC007DF8D1 /* YHSignActivityInfoCell.swift */,
04B6814B2E9E2862007DF8D1 /* YHSignPrizeCell.swift */,
04B681492E9E27DC007DF8D1 /* YHSignSuccessHeaderView.swift */,
);
path = V;
sourceTree = "<group>";
......@@ -6983,20 +6984,6 @@
path = MakePlan;
sourceTree = "<group>";
};
04C0ED692E7BAC2D00B0D182 /* SwiftScan */ = {
isa = PBXGroup;
children = (
04C0ED622E7BAC2D00B0D182 /* LBXPermissions.swift */,
04C0ED632E7BAC2D00B0D182 /* LBXScanLineAnimation.swift */,
04C0ED642E7BAC2D00B0D182 /* LBXScanNetAnimation.swift */,
04C0ED652E7BAC2D00B0D182 /* LBXScanView.swift */,
04C0ED662E7BAC2D00B0D182 /* LBXScanViewController.swift */,
04C0ED672E7BAC2D00B0D182 /* LBXScanViewStyle.swift */,
04C0ED682E7BAC2D00B0D182 /* LBXScanWrapper.swift */,
);
path = SwiftScan;
sourceTree = "<group>";
};
04B30B7C2E86371E004E4B12 /* NameCard(名片) */ = {
isa = PBXGroup;
children = (
......@@ -7035,6 +7022,20 @@
path = VM;
sourceTree = "<group>";
};
04C0ED692E7BAC2D00B0D182 /* SwiftScan */ = {
isa = PBXGroup;
children = (
04C0ED622E7BAC2D00B0D182 /* LBXPermissions.swift */,
04C0ED632E7BAC2D00B0D182 /* LBXScanLineAnimation.swift */,
04C0ED642E7BAC2D00B0D182 /* LBXScanNetAnimation.swift */,
04C0ED652E7BAC2D00B0D182 /* LBXScanView.swift */,
04C0ED662E7BAC2D00B0D182 /* LBXScanViewController.swift */,
04C0ED672E7BAC2D00B0D182 /* LBXScanViewStyle.swift */,
04C0ED682E7BAC2D00B0D182 /* LBXScanWrapper.swift */,
);
path = SwiftScan;
sourceTree = "<group>";
};
04D4EC262E839A0300B0329B /* Circle(下属社区) */ = {
isa = PBXGroup;
children = (
......@@ -7561,10 +7562,14 @@
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-galaxy/Pods-galaxy-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
inputPaths = (
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-galaxy/Pods-galaxy-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-galaxy/Pods-galaxy-frameworks.sh\"\n";
......@@ -7578,10 +7583,14 @@
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-galaxy/Pods-galaxy-resources-${CONFIGURATION}-input-files.xcfilelist",
);
inputPaths = (
);
name = "[CP] Copy Pods Resources";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-galaxy/Pods-galaxy-resources-${CONFIGURATION}-output-files.xcfilelist",
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-galaxy/Pods-galaxy-resources.sh\"\n";
......@@ -7821,6 +7830,7 @@
045C10262D12CA5F00BD2DC0 /* YHLookResignAlertView.swift in Sources */,
045C10272D12CA5F00BD2DC0 /* YHUploadCertificateDetailModel.swift in Sources */,
045C10282D12CA5F00BD2DC0 /* YHWorkExperienceProjectModel.swift in Sources */,
04B6814C2E9E2862007DF8D1 /* YHSignPrizeCell.swift in Sources */,
045C10292D12CA5F00BD2DC0 /* YHInformationPerfectListVC.swift in Sources */,
045C102A2D12CA5F00BD2DC0 /* YHEditViewModel.swift in Sources */,
045C102B2D12CA5F00BD2DC0 /* YHAppVersionForceUpdateView.swift in Sources */,
......@@ -8463,8 +8473,10 @@
045C12302D12CA5F00BD2DC0 /* YHAiRadarAreaView.swift in Sources */,
045C12312D12CA5F00BD2DC0 /* YHResignDocumentUploadSignedDocument.swift in Sources */,
045C12322D12CA5F00BD2DC0 /* YHVideoPlayerVC.swift in Sources */,
04B681482E9E2395007DF8D1 /* YHActivitySignSuccessViewController.swift in Sources */,
045C12332D12CA5F00BD2DC0 /* YHInvitationWithGiftsHeadView.swift in Sources */,
045C12342D12CA5F00BD2DC0 /* YHDisappointHKAlertView.swift in Sources */,
04B681462E9E20FC007DF8D1 /* YHSignActivityInfoCell.swift in Sources */,
045C12352D12CA5F00BD2DC0 /* YHPreviewInfoSessionModel.swift in Sources */,
045C12362D12CA5F00BD2DC0 /* YHCertificateViewModel.swift in Sources */,
045C12372D12CA5F00BD2DC0 /* YHInvitationWithGiftsSecondTableViewCell.swift in Sources */,
......@@ -8557,6 +8569,7 @@
045C127C2D12CA5F00BD2DC0 /* YHFormItemSelectSheetCell.swift in Sources */,
045C127D2D12CA5F00BD2DC0 /* YHResignAppointContainerViewController.swift in Sources */,
045C127E2D12CA5F00BD2DC0 /* YHNetworkStatusManager.swift in Sources */,
04B6814A2E9E27DC007DF8D1 /* YHSignSuccessHeaderView.swift in Sources */,
045C127F2D12CA5F00BD2DC0 /* YHSpouseBasicInfoVC.swift in Sources */,
045C12802D12CA5F00BD2DC0 /* YHOtherTextViewItemView.swift in Sources */,
045C12812D12CA5F00BD2DC0 /* YHHomeLastMessageModel.swift in Sources */,
......
//
// YHActivitySignSuccessViewController.swift
// galaxy
//
// Created by Dufet on 2025/10/14.
// Copyright © 2025 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHActivitySignSuccessViewController: YHBaseViewController {
private let tableView = UITableView(frame: .zero, style: .grouped)
private var hasPrize: Bool = false
private var prize: Prize?
private var event: CheckInEvent?
override func viewDidLoad() {
super.viewDidLoad()
setupUI()
setupWithPrize() // 切换到 setupWithoutPrize() 查看无奖品情况
}
private func setupUI() {
view.backgroundColor = UIColor(red: 0.85, green: 0.90, blue: 0.95, alpha: 1)
tableView.delegate = self
tableView.dataSource = self
tableView.backgroundColor = .clear
tableView.separatorStyle = .none
tableView.register(YHSignPrizeCell.self, forCellReuseIdentifier: YHSignPrizeCell.cellReuseIdentifier)
tableView.register(YHSignActivityInfoCell.self, forCellReuseIdentifier: YHSignActivityInfoCell.cellReuseIdentifier)
view.addSubview(tableView)
tableView.snp.makeConstraints { make in
make.top.equalTo(k_Height_NavigationtBarAndStatuBar)
make.left.right.bottom.equalToSuperview()
}
}
// 有奖品的情况
private func setupWithPrize() {
hasPrize = true
prize = Prize(
greeting: "你好,侯林先生",
instruction: "请联系现场工作人员领取您的奖品",
image: "prize_sofa"
)
event = CheckInEvent(
title: "翱翔云端·探索无限",
subtitle: "2025无人机创新科技沙龙",
date: "2025-09-13 周六 09:30",
location: "银河集团香港体验中心(香港湾仔港湾道26号华润大厦27楼2705室)",
subLocation: "请于机导航至银河集团香港体验中心",
thumbnailImage: "event_thumb"
)
tableView.reloadData()
}
// 无奖品的情况
private func setupWithoutPrize() {
hasPrize = false
prize = nil
event = CheckInEvent(
title: "翱翔云端·探索无限",
subtitle: "2025无人机创新科技沙龙",
date: "2024-08-06 周日 09:30",
location: "本元大厦26A银河集团体验中心",
subLocation: "距地铁10号线亮马站D口步行62",
thumbnailImage: "event_thumb"
)
tableView.reloadData()
}
}
// MARK: - UITableViewDelegate & DataSource
extension YHActivitySignSuccessViewController: UITableViewDelegate, UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if hasPrize {
return 2 // 标题 + 奖品 + 活动信息
} else {
return 1 // 标题 + 活动信息
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if hasPrize {
if indexPath.row == 0 {
// 奖品 Cell
guard let cell = tableView.dequeueReusableCell(withIdentifier: YHSignPrizeCell.cellReuseIdentifier, for: indexPath) as? YHSignPrizeCell else {
return UITableViewCell()
}
if let prize = prize {
cell.configure(with: prize)
}
return cell
} else {
// 活动信息 Cell
guard let cell = tableView.dequeueReusableCell(withIdentifier: YHSignActivityInfoCell.cellReuseIdentifier, for: indexPath) as? YHSignActivityInfoCell else {
return UITableViewCell()
}
if let event = event {
cell.configure(with: event)
}
return cell
}
} else {
// 无奖品时,第二个就是活动信息 Cell
guard let cell = tableView.dequeueReusableCell(withIdentifier: YHSignActivityInfoCell.cellReuseIdentifier, for: indexPath) as? YHSignActivityInfoCell else {
return UITableViewCell()
}
if let event = event {
cell.configure(with: event)
}
return cell
}
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let view = YHSignSuccessHeaderView()
return view
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 83
}
}
......@@ -74,3 +74,19 @@ class YHActivityModel: SmartCodable {
}
}
// MARK: - 数据模型
struct CheckInEvent {
let title: String
let subtitle: String
let date: String
let location: String
let subLocation: String
let thumbnailImage: String?
}
struct Prize {
let greeting: String
let instruction: String
let image: String
}
//
// YHSignSuccessCell.swift
// galaxy
//
// Created by Dufet on 2025/10/14.
// Copyright © 2025 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHSignActivityInfoCell: UITableViewCell {
static let cellReuseIdentifier = "YHSignActivityInfoCell"
private let containerView = UIView()
private let titleLabel = UILabel()
private let subtitleLabel = UILabel()
private let thumbnailImageView = UIImageView()
private let timeLabel = UILabel()
private let timeValueLabel = UILabel()
private let locationLabel = UILabel()
private let locationValueLabel = UILabel()
private let subLocationLabel = UILabel()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setupUI()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
private func setupUI() {
backgroundColor = .clear
selectionStyle = .none
containerView.backgroundColor = UIColor(white: 0.98, alpha: 1)
containerView.layer.cornerRadius = 12
contentView.addSubview(containerView)
titleLabel.font = .systemFont(ofSize: 16, weight: .medium)
titleLabel.textColor = .black
titleLabel.numberOfLines = 0
containerView.addSubview(titleLabel)
subtitleLabel.font = .systemFont(ofSize: 16, weight: .medium)
subtitleLabel.textColor = .black
subtitleLabel.numberOfLines = 0
containerView.addSubview(subtitleLabel)
thumbnailImageView.contentMode = .scaleAspectFit
thumbnailImageView.layer.cornerRadius = 4
thumbnailImageView.clipsToBounds = true
thumbnailImageView.backgroundColor = .systemBlue.withAlphaComponent(0.2)
containerView.addSubview(thumbnailImageView)
timeLabel.text = "时间"
timeLabel.font = .systemFont(ofSize: 14)
timeLabel.textColor = .gray
containerView.addSubview(timeLabel)
timeValueLabel.font = .systemFont(ofSize: 14)
timeValueLabel.textColor = .black
timeValueLabel.numberOfLines = 0
containerView.addSubview(timeValueLabel)
locationLabel.text = "地点"
locationLabel.font = .systemFont(ofSize: 14)
locationLabel.textColor = .gray
containerView.addSubview(locationLabel)
locationValueLabel.font = .systemFont(ofSize: 14)
locationValueLabel.textColor = .black
locationValueLabel.numberOfLines = 0
containerView.addSubview(locationValueLabel)
subLocationLabel.font = .systemFont(ofSize: 12)
subLocationLabel.textColor = .lightGray
subLocationLabel.numberOfLines = 0
containerView.addSubview(subLocationLabel)
// 约束
containerView.snp.makeConstraints { make in
make.top.equalToSuperview().offset(8)
make.left.equalToSuperview().offset(16)
make.right.equalToSuperview().offset(-16)
make.bottom.equalToSuperview().offset(-8)
}
titleLabel.snp.makeConstraints { make in
make.top.equalToSuperview().offset(20)
make.left.equalToSuperview().offset(20)
make.right.equalTo(thumbnailImageView.snp.left).offset(-12)
}
subtitleLabel.snp.makeConstraints { make in
make.top.equalTo(titleLabel.snp.bottom).offset(4)
make.left.equalToSuperview().offset(20)
make.right.equalTo(thumbnailImageView.snp.left).offset(-12)
}
thumbnailImageView.snp.makeConstraints { make in
make.top.equalToSuperview().offset(20)
make.right.equalToSuperview().offset(-20)
make.width.height.equalTo(60)
}
timeLabel.snp.makeConstraints { make in
make.top.equalTo(subtitleLabel.snp.bottom).offset(20)
make.left.equalToSuperview().offset(20)
make.width.equalTo(50)
}
timeValueLabel.snp.makeConstraints { make in
make.centerY.equalTo(timeLabel)
make.left.equalTo(timeLabel.snp.right).offset(12)
make.right.equalToSuperview().offset(-20)
}
locationLabel.snp.makeConstraints { make in
make.top.equalTo(timeLabel.snp.bottom).offset(16)
make.left.equalToSuperview().offset(20)
make.width.equalTo(50)
}
locationValueLabel.snp.makeConstraints { make in
make.top.equalTo(locationLabel)
make.left.equalTo(locationLabel.snp.right).offset(12)
make.right.equalToSuperview().offset(-20)
}
subLocationLabel.snp.makeConstraints { make in
make.top.equalTo(locationValueLabel.snp.bottom).offset(8)
make.left.equalTo(locationValueLabel)
make.right.equalToSuperview().offset(-20)
make.bottom.equalToSuperview().offset(-20)
}
}
func configure(with event: CheckInEvent) {
titleLabel.text = event.title
subtitleLabel.text = event.subtitle
timeValueLabel.text = event.date
locationValueLabel.text = event.location
subLocationLabel.text = event.subLocation
if let imageName = event.thumbnailImage, let image = UIImage(named: imageName) {
thumbnailImageView.image = image
}
}
}
//
// YHSignPrizeCellTableViewCell.swift
// galaxy
//
// Created by Dufet on 2025/10/14.
// Copyright © 2025 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHSignPrizeCell: UITableViewCell {
static let cellReuseIdentifier = "YHSignPrizeCell"
private let containerView = UIView()
private let greetingLabel = UILabel()
private let instructionLabel = UILabel()
private let prizeImageView = UIImageView()
private let overlayButton = UIButton()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setupUI()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
private func setupUI() {
backgroundColor = .clear
selectionStyle = .none
containerView.backgroundColor = UIColor(white: 0.98, alpha: 1)
containerView.layer.cornerRadius = 12
contentView.addSubview(containerView)
greetingLabel.font = .systemFont(ofSize: 20, weight: .medium)
greetingLabel.textColor = .black
containerView.addSubview(greetingLabel)
instructionLabel.font = .systemFont(ofSize: 14)
instructionLabel.textColor = .gray
containerView.addSubview(instructionLabel)
prizeImageView.contentMode = .scaleAspectFill
prizeImageView.clipsToBounds = true
prizeImageView.layer.cornerRadius = 8
prizeImageView.backgroundColor = .lightGray
containerView.addSubview(prizeImageView)
overlayButton.setTitle("一步了解", for: .normal)
overlayButton.setTitleColor(.white, for: .normal)
overlayButton.titleLabel?.font = .systemFont(ofSize: 14)
overlayButton.layer.cornerRadius = 16
overlayButton.layer.borderWidth = 1
overlayButton.layer.borderColor = UIColor.white.cgColor
prizeImageView.addSubview(overlayButton)
containerView.snp.makeConstraints { make in
make.top.equalToSuperview().offset(8)
make.left.equalToSuperview().offset(16)
make.right.equalToSuperview().offset(-16)
make.bottom.equalToSuperview().offset(-8)
}
greetingLabel.snp.makeConstraints { make in
make.top.equalToSuperview().offset(20)
make.left.equalToSuperview().offset(20)
make.right.equalToSuperview().offset(-20)
}
instructionLabel.snp.makeConstraints { make in
make.top.equalTo(greetingLabel.snp.bottom).offset(8)
make.left.equalToSuperview().offset(20)
make.right.equalToSuperview().offset(-20)
}
prizeImageView.snp.makeConstraints { make in
make.top.equalTo(instructionLabel.snp.bottom).offset(16)
make.left.equalToSuperview().offset(20)
make.right.equalToSuperview().offset(-20)
make.bottom.equalToSuperview().offset(-20)
make.height.equalTo(200)
}
overlayButton.snp.makeConstraints { make in
make.left.equalToSuperview().offset(16)
make.bottom.equalToSuperview().offset(-16)
make.width.equalTo(100)
make.height.equalTo(32)
}
}
func configure(with prize: Prize) {
greetingLabel.text = prize.greeting
instructionLabel.text = prize.instruction
if let image = UIImage(named: prize.image) {
prizeImageView.image = image
}
}
}
//
// YHSignSuccessHeaderView.swift
// galaxy
//
// Created by Dufet on 2025/10/14.
// Copyright © 2025 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHSignSuccessHeaderView: UIView {
private let checkIconView = UIImageView()
private let titleLabel = UILabel()
override init(frame: CGRect) {
super.init(frame: frame)
setupUI()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
private func setupUI() {
backgroundColor = .clear
checkIconView.image = UIImage(systemName: "checkmark.circle")
checkIconView.tintColor = .black
addSubview(checkIconView)
titleLabel.text = "签到成功"
titleLabel.font = .systemFont(ofSize: 28, weight: .semibold)
titleLabel.textColor = .black
addSubview(titleLabel)
checkIconView.snp.makeConstraints { make in
make.top.equalToSuperview().offset(24)
make.left.equalToSuperview().offset(32)
make.width.height.equalTo(36)
make.bottom.equalToSuperview().offset(-24)
}
titleLabel.snp.makeConstraints { make in
make.centerY.equalTo(checkIconView)
make.left.equalTo(checkIconView.snp.right).offset(12)
}
}
}
......@@ -764,6 +764,13 @@ extension YHMyNewViewController {
}
func clickItem(_ item: PersonalModuleItem) {
if true {
let vc = YHActivitySignSuccessViewController()
self.navigationController?.pushViewController(vc)
return
}
if !checkLogin() {
return
}
......
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