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

// 图片详情

parent bf059abe
...@@ -365,6 +365,7 @@ ...@@ -365,6 +365,7 @@
04F957472C203033003C631C /* YHMyGoodFriendsVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F957462C203033003C631C /* YHMyGoodFriendsVC.swift */; }; 04F957472C203033003C631C /* YHMyGoodFriendsVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F957462C203033003C631C /* YHMyGoodFriendsVC.swift */; };
04F9574B2C2032D8003C631C /* YHMyFriendsCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F9574A2C2032D8003C631C /* YHMyFriendsCell.swift */; }; 04F9574B2C2032D8003C631C /* YHMyFriendsCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F9574A2C2032D8003C631C /* YHMyFriendsCell.swift */; };
04F9574D2C20644E003C631C /* YHFriendsResponseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F9574C2C20644E003C631C /* YHFriendsResponseView.swift */; }; 04F9574D2C20644E003C631C /* YHFriendsResponseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F9574C2C20644E003C631C /* YHFriendsResponseView.swift */; };
04FA6DF42C32939D00AB3BEA /* YHActivityDetailInfoCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04FA6DF32C32939D00AB3BEA /* YHActivityDetailInfoCell.swift */; };
04FA8B2B2C06F59D00ABE43F /* YHAppleLoginManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04FA8B2A2C06F59D00ABE43F /* YHAppleLoginManager.swift */; }; 04FA8B2B2C06F59D00ABE43F /* YHAppleLoginManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04FA8B2A2C06F59D00ABE43F /* YHAppleLoginManager.swift */; };
04FA8B2E2C084C7E00ABE43F /* ATAuthSDK.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 04FA8B2D2C084C7E00ABE43F /* ATAuthSDK.bundle */; }; 04FA8B2E2C084C7E00ABE43F /* ATAuthSDK.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 04FA8B2D2C084C7E00ABE43F /* ATAuthSDK.bundle */; };
04FA8B302C0874CA00ABE43F /* YHOneKeyLoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04FA8B2F2C0874CA00ABE43F /* YHOneKeyLoginViewModel.swift */; }; 04FA8B302C0874CA00ABE43F /* YHOneKeyLoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04FA8B2F2C0874CA00ABE43F /* YHOneKeyLoginViewModel.swift */; };
...@@ -932,6 +933,7 @@ ...@@ -932,6 +933,7 @@
04F957462C203033003C631C /* YHMyGoodFriendsVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMyGoodFriendsVC.swift; sourceTree = "<group>"; }; 04F957462C203033003C631C /* YHMyGoodFriendsVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMyGoodFriendsVC.swift; sourceTree = "<group>"; };
04F9574A2C2032D8003C631C /* YHMyFriendsCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMyFriendsCell.swift; sourceTree = "<group>"; }; 04F9574A2C2032D8003C631C /* YHMyFriendsCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMyFriendsCell.swift; sourceTree = "<group>"; };
04F9574C2C20644E003C631C /* YHFriendsResponseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHFriendsResponseView.swift; sourceTree = "<group>"; }; 04F9574C2C20644E003C631C /* YHFriendsResponseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHFriendsResponseView.swift; sourceTree = "<group>"; };
04FA6DF32C32939D00AB3BEA /* YHActivityDetailInfoCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHActivityDetailInfoCell.swift; sourceTree = "<group>"; };
04FA8B2A2C06F59D00ABE43F /* YHAppleLoginManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHAppleLoginManager.swift; sourceTree = "<group>"; }; 04FA8B2A2C06F59D00ABE43F /* YHAppleLoginManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHAppleLoginManager.swift; sourceTree = "<group>"; };
04FA8B2D2C084C7E00ABE43F /* ATAuthSDK.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = ATAuthSDK.bundle; path = "galaxy/Classes/Modules/AutoLogin(一键登录)/framework/ATAuthSDK_D.framework/ATAuthSDK.bundle"; sourceTree = "<group>"; }; 04FA8B2D2C084C7E00ABE43F /* ATAuthSDK.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = ATAuthSDK.bundle; path = "galaxy/Classes/Modules/AutoLogin(一键登录)/framework/ATAuthSDK_D.framework/ATAuthSDK.bundle"; sourceTree = "<group>"; };
04FA8B2F2C0874CA00ABE43F /* YHOneKeyLoginViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHOneKeyLoginViewModel.swift; sourceTree = "<group>"; }; 04FA8B2F2C0874CA00ABE43F /* YHOneKeyLoginViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHOneKeyLoginViewModel.swift; sourceTree = "<group>"; };
...@@ -2198,6 +2200,7 @@ ...@@ -2198,6 +2200,7 @@
children = ( children = (
04CE1AC92C2AD91F001CB80A /* YHActivityTravelCell.swift */, 04CE1AC92C2AD91F001CB80A /* YHActivityTravelCell.swift */,
04CE1AC82C2AD91F001CB80A /* YHActivityDetailCell.swift */, 04CE1AC82C2AD91F001CB80A /* YHActivityDetailCell.swift */,
04FA6DF32C32939D00AB3BEA /* YHActivityDetailInfoCell.swift */,
04CE1ACA2C2AD91F001CB80A /* YHActivityListCell.swift */, 04CE1ACA2C2AD91F001CB80A /* YHActivityListCell.swift */,
04CE1AC42C2AD91F001CB80A /* YHActivityDetailBottomView.swift */, 04CE1AC42C2AD91F001CB80A /* YHActivityDetailBottomView.swift */,
04CE1AC52C2AD91F001CB80A /* YHActivityTravelitemView.swift */, 04CE1AC52C2AD91F001CB80A /* YHActivityTravelitemView.swift */,
...@@ -3235,6 +3238,7 @@ ...@@ -3235,6 +3238,7 @@
A53B61122BB128AF0010B573 /* YHFileListItemsView2.swift in Sources */, A53B61122BB128AF0010B573 /* YHFileListItemsView2.swift in Sources */,
044D0BF62C2154CA00C5CF5E /* YHAllowUseMyInfoViewController.swift in Sources */, 044D0BF62C2154CA00C5CF5E /* YHAllowUseMyInfoViewController.swift in Sources */,
04F9574D2C20644E003C631C /* YHFriendsResponseView.swift in Sources */, 04F9574D2C20644E003C631C /* YHFriendsResponseView.swift in Sources */,
04FA6DF42C32939D00AB3BEA /* YHActivityDetailInfoCell.swift in Sources */,
04F5F8702C1AC4C2004A463C /* YHHKEventWebViewController.swift in Sources */, 04F5F8702C1AC4C2004A463C /* YHHKEventWebViewController.swift in Sources */,
045EEE892B9F171A0022A143 /* YHPreviewBaseViewController.swift in Sources */, 045EEE892B9F171A0022A143 /* YHPreviewBaseViewController.swift in Sources */,
045EEEA42B9F171A0022A143 /* YHImageResultViewController.swift in Sources */, 045EEEA42B9F171A0022A143 /* YHImageResultViewController.swift in Sources */,
......
...@@ -25,6 +25,8 @@ class YHActivityDetailViewController: YHBaseViewController { ...@@ -25,6 +25,8 @@ class YHActivityDetailViewController: YHBaseViewController {
tableView.backgroundColor = UIColor.white tableView.backgroundColor = UIColor.white
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "UITableViewCell") tableView.register(UITableViewCell.self, forCellReuseIdentifier: "UITableViewCell")
tableView.register(YHActivityDetailCell.self, forCellReuseIdentifier: YHActivityDetailCell.cellReuseIdentifier) tableView.register(YHActivityDetailCell.self, forCellReuseIdentifier: YHActivityDetailCell.cellReuseIdentifier)
tableView.register(YHActivityDetailInfoCell.self, forCellReuseIdentifier: YHActivityDetailInfoCell.cellReuseIdentifier)
tableView.tableHeaderView = nil tableView.tableHeaderView = nil
tableView.tableFooterView = nil tableView.tableFooterView = nil
...@@ -45,8 +47,7 @@ class YHActivityDetailViewController: YHBaseViewController { ...@@ -45,8 +47,7 @@ class YHActivityDetailViewController: YHBaseViewController {
let view = YHActivityDetailBottomView() let view = YHActivityDetailBottomView()
return view return view
}() }()
// MARK: - 生命周期方法 // MARK: - 生命周期方法
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
...@@ -152,8 +153,7 @@ extension YHActivityDetailViewController { ...@@ -152,8 +153,7 @@ extension YHActivityDetailViewController {
if !activityId.isEmpty { if !activityId.isEmpty {
viewModel.getActivityDetailData(activityID: activityId) { success, error in viewModel.getActivityDetailData(activityID: activityId) { success, error in
if success { if success {
self.requestImages()
//bottomView //bottomView
self.bottomView.dataModel = self.viewModel.activityDetailModel self.bottomView.dataModel = self.viewModel.activityDetailModel
} else { } else {
...@@ -172,6 +172,33 @@ extension YHActivityDetailViewController { ...@@ -172,6 +172,33 @@ extension YHActivityDetailViewController {
} }
func requestImages() {
guard let detailModel = self.viewModel.activityDetailModel else {
return
}
let ossGroup = DispatchGroup()
for item in detailModel.coverItems {
ossGroup.enter()
item.imgView.kf.setImage(with: URL(string: item.url)) { result in
switch result {
case .success(let value):
let size = value.image.size
let scale = size.width > 0 ? Double(size.height / size.width) : 0.0
if scale > 0 {
item.height = scale * item.width
}
case .failure(let error):
print("Job failed: \(error.localizedDescription)")
}
ossGroup.leave()
}
}
ossGroup.notify(queue: .main) {
self.tableView.reloadData()
}
}
func applyActivity(param : [String : Any]) { func applyActivity(param : [String : Any]) {
viewModel.applyActivity(param: param) { success, error in viewModel.applyActivity(param: param) { success, error in
...@@ -211,8 +238,14 @@ extension YHActivityDetailViewController: UITableViewDelegate, UITableViewDataSo ...@@ -211,8 +238,14 @@ extension YHActivityDetailViewController: UITableViewDelegate, UITableViewDataSo
} }
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: YHActivityDetailCell.cellReuseIdentifier, for: indexPath) as! YHActivityDetailCell let cell = tableView.dequeueReusableCell(withIdentifier: YHActivityDetailCell.cellReuseIdentifier, for: indexPath) as! YHActivityDetailCell
cell.dataModel = viewModel.activityDetailModel cell.dataModel = viewModel.activityDetailModel
// let cell = tableView.dequeueReusableCell(withIdentifier: YHActivityDetailInfoCell.cellReuseIdentifier, for: indexPath) as! YHActivityDetailInfoCell
// cell.dataModel = viewModel.activityDetailModel ?? YHActivityDetailModel()
return cell return cell
} }
......
...@@ -24,4 +24,18 @@ class YHActivityDetailModel: YHActivityModel { ...@@ -24,4 +24,18 @@ class YHActivityDetailModel: YHActivityModel {
var posters : [String] = [] //活动海报 var posters : [String] = [] //活动海报
var businessCardName : String = "" //报名人姓名 var businessCardName : String = "" //报名人姓名
// 自定义
var coverItems:[YHActivityCoverItem] = []
func getImageInfo() {
self.coverItems.removeAll()
coverItems.removeAll()
for (index, url) in self.posters.enumerated() {
let item = YHActivityCoverItem()
item.url = url
coverItems.append(item)
}
}
} }
//
// YHActivityDetailInfoCell.swift
// galaxy
//
// Created by edy on 2024/7/1.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHActivityCoverItem {
var url: String = ""
let width: CGFloat = KScreenWidth-40.0
var height: CGFloat = KScreenWidth-40.0
lazy var imgView: UIImageView = {
let view = UIImageView(image: UIImage(named:"global_default_image"))
view.contentMode = .scaleAspectFill
view.clipsToBounds = true
return view
}()
}
class YHActivityDetailInfoCell: UITableViewCell {
static let cellReuseIdentifier = "YHActivityDetailInfoCell"
var dataModel : YHActivityDetailModel = YHActivityDetailModel() {
didSet {
updateUI()
}
}
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 lazy var bottomLine : UIView = {
let view = UIView()
view.backgroundColor = UIColor.separatorColor
return view
}()
lazy var nameLabel:UILabel = {
let lable = UILabel()
lable.textColor = UIColor.mainTextColor
lable.textAlignment = .left
lable.font = UIFont.PFSC_M(ofSize:17)
lable.text = "活动详情"
lable.numberOfLines = 0
return lable
}()
lazy var describeLable:UILabel = {
let lable = UILabel()
lable.textColor = UIColor.mainTextColor70
lable.textAlignment = .left
lable.lineBreakMode = .byCharWrapping
lable.font = UIFont.PFSC_R(ofSize:14)
lable.numberOfLines = 0
return lable
}()
lazy var imgsContentView:UIView = {
let view = UIView()
view.backgroundColor = .green
view.clipsToBounds = true
return view
}()
}
extension YHActivityDetailInfoCell {
func updateUI() {
dataModel.introduce = "阿是发大水发生大发手动阀三大发啥打法是打发四大法守法阿斯顿法师法师法师法师阿斯顿法师法师打发四方达"
describeLable.text = dataModel.introduce
describeLable.snp.updateConstraints { make in
let topMargin = dataModel.introduce.isEmpty ? 0.0 : 24.0
make.top.equalTo(nameLabel.snp.bottom).offset(topMargin)
}
imgsContentView.removeSubviews()
var theLastView: UIView? = nil
var totalImgHeight = 0.0
for (index, item) in dataModel.coverItems.enumerated() {
totalImgHeight += item.height
self.imgsContentView.addSubview(item.imgView)
item.imgView.snp.remakeConstraints { make in
if index == 0 {
make.top.equalTo(self.imgsContentView.snp.top).offset(item.height > 0 ? 24.0 : 0.0)
} else {
if let lastView = theLastView {
make.top.equalTo(lastView.snp.bottom).offset(item.height > 0 ? 24.0 : 0.0)
}
}
make.height.equalTo(item.height)
make.left.right.equalToSuperview()
}
theLastView = item.imgView
}
imgsContentView.snp.updateConstraints { make in
let top2Margin = self.dataModel.coverItems.count > 0 ? 24.0 : 0.0
make.top.equalTo(describeLable.snp.bottom).offset(top2Margin)
let imgsHeight = self.dataModel.coverItems.count <= 0 ? 0.0 : totalImgHeight
make.height.equalTo(imgsHeight)
}
self.setNeedsLayout()
self.layoutIfNeeded()
}
func setupUI() {
self.contentView.addSubview(bottomLine)
self.contentView.addSubview(nameLabel)
self.contentView.addSubview(describeLable)
self.contentView.addSubview(imgsContentView)
nameLabel.setContentCompressionResistancePriority(.required, for: .vertical)
nameLabel.setContentHuggingPriority(.required, for: .vertical)
describeLable.setContentCompressionResistancePriority(.required, for: .vertical)
describeLable.setContentHuggingPriority(.required, for: .vertical)
bottomLine.snp.makeConstraints { make in
make.left.equalTo(20)
make.right.equalTo(-20)
make.top.equalToSuperview()
make.height.equalTo(1)
}
nameLabel.snp.makeConstraints { make in
make.left.equalTo(20)
make.right.equalTo(-20)
make.top.equalTo(bottomLine.snp.bottom).offset(24)
}
describeLable.snp.makeConstraints { make in
make.left.equalTo(20)
make.right.equalTo(-20)
make.top.equalTo(nameLabel.snp.bottom).offset(24)
}
imgsContentView.snp.makeConstraints { make in
make.left.equalTo(20)
make.right.equalTo(-20)
make.top.equalTo(describeLable.snp.bottom).offset(24)
make.height.equalTo(0.0)
make.bottom.equalTo(-24)
}
}
}
...@@ -142,6 +142,7 @@ extension YHActivityViewModel { ...@@ -142,6 +142,7 @@ extension YHActivityViewModel {
return return
} }
self.activityDetailModel = result self.activityDetailModel = result
self.activityDetailModel?.getImageInfo()
callBackBlock(true, nil) callBackBlock(true, nil)
} else { } else {
self.activityDetailModel = nil self.activityDetailModel = nil
......
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