Commit 0c18a739 authored by David黄金龙's avatar David黄金龙

活动详情接口

parent 5c08655b
...@@ -374,6 +374,7 @@ ...@@ -374,6 +374,7 @@
A540342F2C2A606900E63A20 /* YHActivityListModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A540342E2C2A606900E63A20 /* YHActivityListModel.swift */; }; A540342F2C2A606900E63A20 /* YHActivityListModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A540342E2C2A606900E63A20 /* YHActivityListModel.swift */; };
A54034312C2A612100E63A20 /* YHActivityModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A54034302C2A612100E63A20 /* YHActivityModel.swift */; }; A54034312C2A612100E63A20 /* YHActivityModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A54034302C2A612100E63A20 /* YHActivityModel.swift */; };
A54034342C2A621000E63A20 /* YHActivityViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A54034332C2A621000E63A20 /* YHActivityViewModel.swift */; }; A54034342C2A621000E63A20 /* YHActivityViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A54034332C2A621000E63A20 /* YHActivityViewModel.swift */; };
A54034362C2A8DE200E63A20 /* YHActivityDetailModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A54034352C2A8DE200E63A20 /* YHActivityDetailModel.swift */; };
A554A5122B99715000EA5973 /* YHConstantArrayData.swift in Sources */ = {isa = PBXBuildFile; fileRef = A554A5112B99715000EA5973 /* YHConstantArrayData.swift */; }; A554A5122B99715000EA5973 /* YHConstantArrayData.swift in Sources */ = {isa = PBXBuildFile; fileRef = A554A5112B99715000EA5973 /* YHConstantArrayData.swift */; };
A5551FFE2B4C26CE00510980 /* YHBaseViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5551FFD2B4C26CE00510980 /* YHBaseViewModel.swift */; }; A5551FFE2B4C26CE00510980 /* YHBaseViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5551FFD2B4C26CE00510980 /* YHBaseViewModel.swift */; };
A5573ED22B317BFF00D98EC0 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5573ED12B317BFF00D98EC0 /* AppDelegate.swift */; }; A5573ED22B317BFF00D98EC0 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5573ED12B317BFF00D98EC0 /* AppDelegate.swift */; };
...@@ -939,6 +940,7 @@ ...@@ -939,6 +940,7 @@
A540342E2C2A606900E63A20 /* YHActivityListModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHActivityListModel.swift; sourceTree = "<group>"; }; A540342E2C2A606900E63A20 /* YHActivityListModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHActivityListModel.swift; sourceTree = "<group>"; };
A54034302C2A612100E63A20 /* YHActivityModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHActivityModel.swift; sourceTree = "<group>"; }; A54034302C2A612100E63A20 /* YHActivityModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHActivityModel.swift; sourceTree = "<group>"; };
A54034332C2A621000E63A20 /* YHActivityViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHActivityViewModel.swift; sourceTree = "<group>"; }; A54034332C2A621000E63A20 /* YHActivityViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHActivityViewModel.swift; sourceTree = "<group>"; };
A54034352C2A8DE200E63A20 /* YHActivityDetailModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHActivityDetailModel.swift; sourceTree = "<group>"; };
A554A5112B99715000EA5973 /* YHConstantArrayData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHConstantArrayData.swift; sourceTree = "<group>"; }; A554A5112B99715000EA5973 /* YHConstantArrayData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHConstantArrayData.swift; sourceTree = "<group>"; };
A5551FFD2B4C26CE00510980 /* YHBaseViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHBaseViewModel.swift; sourceTree = "<group>"; }; A5551FFD2B4C26CE00510980 /* YHBaseViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHBaseViewModel.swift; sourceTree = "<group>"; };
A5573ECE2B317BFF00D98EC0 /* galaxy.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = galaxy.app; sourceTree = BUILT_PRODUCTS_DIR; }; A5573ECE2B317BFF00D98EC0 /* galaxy.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = galaxy.app; sourceTree = BUILT_PRODUCTS_DIR; };
...@@ -2312,6 +2314,7 @@ ...@@ -2312,6 +2314,7 @@
children = ( children = (
A540342E2C2A606900E63A20 /* YHActivityListModel.swift */, A540342E2C2A606900E63A20 /* YHActivityListModel.swift */,
A54034302C2A612100E63A20 /* YHActivityModel.swift */, A54034302C2A612100E63A20 /* YHActivityModel.swift */,
A54034352C2A8DE200E63A20 /* YHActivityDetailModel.swift */,
); );
path = M; path = M;
sourceTree = "<group>"; sourceTree = "<group>";
...@@ -3425,6 +3428,7 @@ ...@@ -3425,6 +3428,7 @@
044D0C1A2C22B40B00C5CF5E /* YHEditPersonalProfileViewController.swift in Sources */, 044D0C1A2C22B40B00C5CF5E /* YHEditPersonalProfileViewController.swift in Sources */,
048787D92BCF68530036E221 /* YHProgressView.swift in Sources */, 048787D92BCF68530036E221 /* YHProgressView.swift in Sources */,
045EEEEC2B9F171A0022A143 /* YHBrotherInfoVC.swift in Sources */, 045EEEEC2B9F171A0022A143 /* YHBrotherInfoVC.swift in Sources */,
A54034362C2A8DE200E63A20 /* YHActivityDetailModel.swift in Sources */,
0477E17A2BA41C7E00436346 /* YHCertificateModel.swift in Sources */, 0477E17A2BA41C7E00436346 /* YHCertificateModel.swift in Sources */,
045EEF242B9F171A0022A143 /* YHStepView.swift in Sources */, 045EEF242B9F171A0022A143 /* YHStepView.swift in Sources */,
044D0BF82C21572B00C5CF5E /* YHAllowSettingTableViewCell.swift in Sources */, 044D0BF82C21572B00C5CF5E /* YHAllowSettingTableViewCell.swift in Sources */,
......
...@@ -9,6 +9,13 @@ ...@@ -9,6 +9,13 @@
import UIKit import UIKit
class YHActivityDetailViewController: YHBaseViewController { class YHActivityDetailViewController: YHBaseViewController {
var activityId : String = ""
lazy var viewModel: YHActivityViewModel = {
let vm = YHActivityViewModel()
return vm
}()
lazy var tableView: UITableView = { lazy var tableView: UITableView = {
let tableView = UITableView(frame:.zero, style:.plain) let tableView = UITableView(frame:.zero, style:.plain)
tableView.showsVerticalScrollIndicator = false tableView.showsVerticalScrollIndicator = false
...@@ -27,16 +34,10 @@ class YHActivityDetailViewController: YHBaseViewController { ...@@ -27,16 +34,10 @@ class YHActivityDetailViewController: YHBaseViewController {
return tableView return tableView
}() }()
// lazy var emptyDataTipsView: YHEmptyDataView = { lazy var topView : UIImageView = {
// let view = YHEmptyDataView.createView("暂无活动", kNoFriendsBgName) let view = UIImageView()
// view.topMargin = 222 view.contentMode = .scaleAspectFill
// view.isHidden = true view.image = UIImage(named: "activity_detail_top_bkg")
// return view
// }()
lazy var topView : UIView = {
let view = UIView()
return view return view
}() }()
...@@ -49,16 +50,23 @@ class YHActivityDetailViewController: YHBaseViewController { ...@@ -49,16 +50,23 @@ class YHActivityDetailViewController: YHBaseViewController {
// MARK: - 生命周期方法 // MARK: - 生命周期方法
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
setupUI()
loadData()
}
}
extension YHActivityDetailViewController {
func setupUI() {
gk_navigationBar.isHidden = false gk_navigationBar.isHidden = false
gk_navigationBar.backgroundColor = .clear gk_navigationBar.backgroundColor = .clear
view.backgroundColor = .red //for test hjl
//1. //1.
view.addSubview(tableView) view.addSubview(tableView)
view.addSubview(bottomView) view.addSubview(bottomView)
view.addSubview(topView)
//2.
tableView.contentInsetAdjustmentBehavior = .never tableView.contentInsetAdjustmentBehavior = .never
tableView.snp.makeConstraints { make in tableView.snp.makeConstraints { make in
make.left.right.top.equalToSuperview() make.left.right.top.equalToSuperview()
...@@ -66,59 +74,50 @@ class YHActivityDetailViewController: YHBaseViewController { ...@@ -66,59 +74,50 @@ class YHActivityDetailViewController: YHBaseViewController {
} }
//3
bottomView.snp.makeConstraints { make in bottomView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview() make.left.right.bottom.equalToSuperview()
make.height.equalTo(YHActivityDetailBottomView.viewH) make.height.equalTo(YHActivityDetailBottomView.viewH)
} }
bottomView.block = { tag in bottomView.block = { tag in
YHApplyActivityAlert.showApplyActivityAlertView { (tag,name,number,phone) in YHApplyActivityAlert.showApplyActivityAlertView { (tag,name,number,phone) in
if tag { if tag {
printLog(tag) printLog(tag)
printLog(name) printLog(name)
printLog(number) printLog(number)
printLog(phone) printLog(phone)
return // let vc = YHApplyActivityResultViewController()
let vc = YHApplyActivityResultViewController() // self.navigationController?.pushViewController(vc)
self.navigationController?.pushViewController(vc)
} }
} }
} }
//2. //4.
// addTopView() topView.snp.makeConstraints { make in
// topView.backgroundColor = .red make.top.left.right.equalToSuperview()
make.height.equalTo(114)
}
} }
} func loadData() {
if !activityId.isEmpty {
extension YHActivityDetailViewController { viewModel.getActivityDetailData(activityID: activityId) { success, error in
func addTopView() { if success {
//tableView
topView.frame = CGRect(x: 0, y: 0, width: KScreenWidth, height: 114) self.tableView.reloadData()
view.addSubview(topView)
//bottomView
let gradientLayer = CAGradientLayer() self.bottomView.dataModel = self.viewModel.activityDetailModel
gradientLayer.frame = topView.bounds } else {
let msg = error?.errorMsg ?? "获取数据出错"
// 定义渐变颜色,这里使用了两种颜色 YHHUD.flash(message: msg)
let colorTop = UIColor.red//UIColor(hex: 0x000000, alpha: 1) self.navigationController?.popViewController()
let colorBottom = UIColor.blue//UIColor(hex: 0x000000, alpha: 0) }
}
// 设置颜色数组 } else {
gradientLayer.colors = [colorTop, colorBottom] YHHUD.flash(message: "参数错误")
navigationController?.popViewController()
// 设置渐变方向,从上到下 }
gradientLayer.startPoint = CGPoint(x: 0.5, y: 0.0)
gradientLayer.endPoint = CGPoint(x: 0.5, y: 1.0)
// 添加渐变层到当前视图的layer
topView.layer.insertSublayer(gradientLayer, at: 0)
} }
} }
...@@ -133,34 +132,11 @@ extension YHActivityDetailViewController: UITableViewDelegate, UITableViewDataSo ...@@ -133,34 +132,11 @@ 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.sessionIndex = indexPath.section cell.dataModel = viewModel.activityDetailModel
return cell return cell
} }
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension return UITableView.automaticDimension
} }
// func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
//
// return 0.001
// }
//
// func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
//
// let view = UIView(frame: CGRect(x: 0, y: 0, width: KScreenWidth, height: 0.001))
// view.backgroundColor = .clear
// return view
// }
//
// func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
// let view = UIView(frame: CGRect(x: 0, y: 0, width: KScreenWidth-16.0*2, height: 0.001))
// view.backgroundColor = .clear
// return view
// }
//
// func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
// return 0.001
// }
} }
...@@ -195,11 +195,13 @@ extension YHActivityListViewController: UITableViewDelegate, UITableViewDataSour ...@@ -195,11 +195,13 @@ extension YHActivityListViewController: UITableViewDelegate, UITableViewDataSour
} }
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if indexPath.section < viewModel.arrActivityListData.count {
let model = viewModel.arrActivityListData[indexPath.section]
let vc = YHActivityDetailViewController() let vc = YHActivityDetailViewController()
navigationController?.pushViewController(vc) vc.activityId = String(model.id)
navigationController?.pushViewController(vc)
}
} }
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
......
//
// YHActivityDetailModel.swift
// galaxy
//
// Created by davidhuangA on 2024/6/25.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHActivityDetailModel: YHActivityModel {
// var cover : String = "" //活动封面
// var name : String = "" //活动标题
// var tag : Int = 0 //活动标签枚举 1:V专享
// var beginTime : String = "" //开始时间戳
// var endTime : String = "" //结束时间戳
// var place : String = "" //活动地点
// var id : Int = 0 //活动ID
// var status : String = "" //活动的状态 1:立即报名 2:已报名 3:活动结束 4:已取消报名
var guidance : String = "" //交通引导
var introduce : String = "" //活动介绍
var posters : [String] = [] //活动海报
var tips : String = "" //温馨提示
var checkId : String = "" //活动行程ID 仅当活动状态为2(已报名)时才大于0
}
...@@ -11,6 +11,12 @@ import UIKit ...@@ -11,6 +11,12 @@ import UIKit
class YHActivityDetailBottomView: UIView { class YHActivityDetailBottomView: UIView {
static let viewH : CGFloat = 98.0 static let viewH : CGFloat = 98.0
var dataModel : YHActivityDetailModel? {
didSet {
updateUI()
}
}
override init(frame: CGRect) { override init(frame: CGRect) {
super.init(frame: CGRect(x: 0, y: 0, width: KScreenWidth, height: YHBasicInfoFillBottomView.viewH)) super.init(frame: CGRect(x: 0, y: 0, width: KScreenWidth, height: YHBasicInfoFillBottomView.viewH))
setupUI() setupUI()
...@@ -21,12 +27,9 @@ class YHActivityDetailBottomView: UIView { ...@@ -21,12 +27,9 @@ class YHActivityDetailBottomView: UIView {
} }
typealias Block = (Int) -> () typealias Block = (Int) -> ()
var block: Block? var block: Block?
var saveButton: UIButton! var saveButton: UIButton!
var nextButton: UIButton!
private lazy var bottomLine : UIView = { private lazy var bottomLine : UIView = {
let view = UIView() let view = UIView()
...@@ -37,6 +40,20 @@ class YHActivityDetailBottomView: UIView { ...@@ -37,6 +40,20 @@ class YHActivityDetailBottomView: UIView {
} }
private extension YHActivityDetailBottomView { private extension YHActivityDetailBottomView {
func updateUI() {
guard let model = dataModel else {
return
}
if let status = Int(model.status) {
isHidden = false
saveButton.setTitle(YHActivityStatus.init(rawValue: status)?.activityTitle, for: .normal)
} else {
isHidden = true
}
}
func setupUI() { func setupUI() {
backgroundColor = .white backgroundColor = .white
......
...@@ -12,11 +12,9 @@ class YHActivityDetailCell: UITableViewCell { ...@@ -12,11 +12,9 @@ class YHActivityDetailCell: UITableViewCell {
static let cellReuseIdentifier = "YHActivityDetailCell" static let cellReuseIdentifier = "YHActivityDetailCell"
var sessionIndex : Int = 0 { var dataModel : YHActivityDetailModel? {
didSet { didSet {
// let tmp = sessionIndex % 3 updateUI()
// let name = "activity_cell_bkg_" + String(tmp)
// bkgImgV.image = UIImage(named: name)
} }
} }
...@@ -34,7 +32,6 @@ class YHActivityDetailCell: UITableViewCell { ...@@ -34,7 +32,6 @@ class YHActivityDetailCell: UITableViewCell {
lazy var topImgV:UIImageView = { lazy var topImgV:UIImageView = {
let view = UIImageView() let view = UIImageView()
view.image = UIImage(named: "global_default_image") view.image = UIImage(named: "global_default_image")
// view.image = UIImage(named: "global_default_image")
view.contentMode = .scaleAspectFill view.contentMode = .scaleAspectFill
view.clipsToBounds = true view.clipsToBounds = true
return view return view
...@@ -59,15 +56,117 @@ class YHActivityDetailCell: UITableViewCell { ...@@ -59,15 +56,117 @@ class YHActivityDetailCell: UITableViewCell {
let view = YHActivityTipsItemView() let view = YHActivityTipsItemView()
return view return view
}() }()
override func layoutSubviews() {
super.layoutSubviews()
topImgV.snp.remakeConstraints { make in
make.top.left.right.equalToSuperview()
make.height.equalTo(KScreenWidth)
}
acitivityTitle.snp.remakeConstraints { make in
make.top.equalTo(topImgV.snp.bottom).offset(24)
make.left.equalTo(20)
make.right.equalTo(-20)
}
var lastView : UIView = acitivityTitle
if acitivityDetail.isHidden {
if acitivityTips.isHidden {
acitivityTitle.snp.remakeConstraints { make in
make.top.equalTo(topImgV.snp.bottom).offset(24)
make.left.equalTo(20)
make.right.equalTo(-20)
make.bottom.equalToSuperview().offset(-42)
}
} else {
acitivityTips.snp.remakeConstraints { make in
make.top.equalTo(lastView.snp.bottom).offset(24)
make.left.equalTo(20)
make.right.equalTo(-20)
make.bottom.equalToSuperview().offset(-42)
}
}
} else {
if acitivityTips.isHidden {
acitivityDetail.snp.remakeConstraints { make in
make.top.equalTo(lastView.snp.bottom).offset(24)
make.left.equalTo(20)
make.right.equalTo(-20)
make.bottom.equalToSuperview().offset(-42)
}
} else {
acitivityDetail.snp.remakeConstraints { make in
make.top.equalTo(lastView.snp.bottom).offset(24)
make.left.equalTo(20)
make.right.equalTo(-20)
}
lastView = acitivityDetail
acitivityTips.snp.remakeConstraints { make in
make.top.equalTo(lastView.snp.bottom).offset(24)
make.left.equalTo(20)
make.right.equalTo(-20)
make.bottom.equalToSuperview().offset(-42)
}
}
}
}
} }
extension YHActivityDetailCell { extension YHActivityDetailCell {
func updateUI() {
guard let model = dataModel else {
return
}
if let url = URL(string: model.cover) {
topImgV.kf.setImage(with: url, placeholder: UIImage(named: "global_default_image"))
} else {
topImgV.image = UIImage(named: "global_default_image")
}
acitivityTitle.dataModel = model
//acitivityDetail
if model.introduce.isEmpty && model.posters.count < 1 {
//隐藏
acitivityDetail.isHidden = true
} else {
//展示
acitivityDetail.isHidden = false
acitivityDetail.dataModel = model
}
//acitivityTips
if model.tips.isEmpty {
acitivityTips.isHidden = true
} else {
acitivityTips.isHidden = false
acitivityTips.dataModel = model
}
layoutIfNeeded()
}
func setupUI() { func setupUI() {
backgroundColor = .clear backgroundColor = .clear
contentView.backgroundColor = .white//for test hjl contentView.backgroundColor = .pageBkgColor
selectionStyle = .none selectionStyle = .none
contentView.addSubview(topImgV) contentView.addSubview(topImgV)
contentView.addSubview(acitivityTitle) contentView.addSubview(acitivityTitle)
contentView.addSubview(acitivityDetail) contentView.addSubview(acitivityDetail)
...@@ -101,6 +200,5 @@ extension YHActivityDetailCell { ...@@ -101,6 +200,5 @@ extension YHActivityDetailCell {
make.bottom.equalToSuperview().offset(-42) make.bottom.equalToSuperview().offset(-42)
} }
acitivityTips.layoutIfNeeded()
} }
} }
...@@ -20,6 +20,13 @@ class YHActivityDetailItemView: UIView { ...@@ -20,6 +20,13 @@ class YHActivityDetailItemView: UIView {
} }
var dataModel : YHActivityDetailModel? {
didSet {
updateUI()
}
}
private lazy var bottomLine : UIView = { private lazy var bottomLine : UIView = {
let view = UIView() let view = UIView()
view.backgroundColor = UIColor.separatorColor view.backgroundColor = UIColor.separatorColor
...@@ -44,6 +51,7 @@ class YHActivityDetailItemView: UIView { ...@@ -44,6 +51,7 @@ class YHActivityDetailItemView: UIView {
nameLabel.font = UIFont.PFSC_R(ofSize:14) nameLabel.font = UIFont.PFSC_R(ofSize:14)
nameLabel.text = "1. 从学渣到哈佛,小儿子经历的挫折和迷茫\r\n2. 诈骗到财富自由,大儿子的“啃老”生活\r\n3. 小女儿15岁写两本书,又获艺术类冠亚军\r\n4. 养育五部曲,精心散养、快乐养育" nameLabel.text = "1. 从学渣到哈佛,小儿子经历的挫折和迷茫\r\n2. 诈骗到财富自由,大儿子的“啃老”生活\r\n3. 小女儿15岁写两本书,又获艺术类冠亚军\r\n4. 养育五部曲,精心散养、快乐养育"
nameLabel.numberOfLines = 0 nameLabel.numberOfLines = 0
nameLabel.isHidden = true
return nameLabel return nameLabel
}() }()
} }
...@@ -51,46 +59,99 @@ class YHActivityDetailItemView: UIView { ...@@ -51,46 +59,99 @@ class YHActivityDetailItemView: UIView {
extension YHActivityDetailItemView { extension YHActivityDetailItemView {
func setupUI() { func updateUI() {
addSubview(bottomLine) guard let model = dataModel else {
addSubview(nameLabel) return
addSubview(describeLable)
bottomLine.snp.makeConstraints { make in
make.top.left.right.equalToSuperview()
make.height.equalTo(1)
} }
nameLabel.snp.makeConstraints { make in
nameLabel.snp.remakeConstraints { make in
make.left.right.equalToSuperview() make.left.right.equalToSuperview()
make.top.equalTo(bottomLine.snp.bottom).offset(24) make.top.equalTo(bottomLine.snp.bottom).offset(24)
} }
var lastView : UIView = nameLabel
describeLable.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.top.equalTo(nameLabel.snp.bottom).offset(24) if model.introduce.isEmpty {
} else {
describeLable.isHidden = false
if model.posters.count > 0 {
describeLable.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.top.equalTo(nameLabel.snp.bottom).offset(24)
}
} else {
describeLable.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.top.equalTo(nameLabel.snp.bottom).offset(24)
make.bottom.equalToSuperview()
}
}
lastView = describeLable
} }
let imageV : UIImageView = UIImageView() if model.posters.count > 0 {
// imageV.backgroundColor = .red //for test hjl for (index, value) in model.posters.enumerated() {
imageV.image = UIImage(named: "global_default_image") print("Index: \(index), Value: \(value)")
addSubview(imageV)
imageV.snp.makeConstraints { make in let imageV : UIImageView = UIImageView()
make.left.right.equalToSuperview() if let url = URL(string: value) {
make.top.equalTo(describeLable.snp.bottom).offset(24) imageV.kf.setImage(with: url, placeholder: UIImage(named: "global_default_image"))
make.height.equalTo(376) }
addSubview(imageV)
if model.posters.count - 1 == index {
if index == 0 {
imageV.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.top.equalTo(lastView.snp.bottom).offset(24)
make.height.equalTo(376)
make.bottom.equalToSuperview()
}
} else {
imageV.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.top.equalTo(lastView.snp.bottom).offset(20)
make.height.equalTo(376)
make.bottom.equalToSuperview()
}
}
} else {
imageV.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.top.equalTo(lastView.snp.bottom).offset(20)
make.height.equalTo(376)
}
}
lastView = imageV
}
} }
}
func setupUI() {
addSubview(bottomLine)
addSubview(nameLabel)
addSubview(describeLable)
bottomLine.snp.makeConstraints { make in
make.top.left.right.equalToSuperview()
make.height.equalTo(1)
}
let imageV2 : UIImageView = UIImageView() nameLabel.snp.makeConstraints { make in
// imageV2.backgroundColor = .purple //for test hjl
imageV2.image = UIImage(named: "global_default_image")
addSubview(imageV2)
imageV2.snp.makeConstraints { make in
make.left.right.equalToSuperview() make.left.right.equalToSuperview()
make.top.equalTo(imageV.snp.bottom).offset(20) make.top.equalTo(bottomLine.snp.bottom).offset(24)
make.height.equalTo(376)
make.bottom.equalToSuperview() make.bottom.equalToSuperview()
} }
......
...@@ -22,6 +22,14 @@ class YHActivityTipsItemView: UIView { ...@@ -22,6 +22,14 @@ class YHActivityTipsItemView: UIView {
var showLineFlag : Bool = true var showLineFlag : Bool = true
var dataModel : YHActivityDetailModel? {
didSet {
updateUI()
}
}
private lazy var bottomLine : UIView = { private lazy var bottomLine : UIView = {
let view = UIView() let view = UIView()
view.backgroundColor = UIColor.separatorColor view.backgroundColor = UIColor.separatorColor
...@@ -84,10 +92,18 @@ class YHActivityTipsItemView: UIView { ...@@ -84,10 +92,18 @@ class YHActivityTipsItemView: UIView {
extension YHActivityTipsItemView { extension YHActivityTipsItemView {
func updateUI() {
guard let model = dataModel else {
return
}
describeLable.text = model.tips
layoutIfNeeded()
}
func setupUI() { func setupUI() {
addSubview(bottomLine) addSubview(bottomLine)
addSubview(nameLabel) addSubview(nameLabel)
addSubview(describeLable) addSubview(describeLable)
layoutIfNeeded()
} }
} }
...@@ -19,17 +19,11 @@ class YHActivityTitleItemView: UIView { ...@@ -19,17 +19,11 @@ class YHActivityTitleItemView: UIView {
setupUI() setupUI()
} }
var dataModel : YHActivityDetailModel? {
didSet {
// lazy var nameLabel:UILabel = { updateUI()
// let nameLabel = UILabel() }
// nameLabel.textColor = UIColor.mainTextColor }
// nameLabel.textAlignment = .left
// nameLabel.font = UIFont.PFSC_B(ofSize:24)
// nameLabel.text = "哈佛爸爸线下教育沙龙哈佛爸爸线下教育沙龙"
// return nameLabel
// }()
private lazy var nameTextView : UITextView = { private lazy var nameTextView : UITextView = {
let lable0 = UITextView() let lable0 = UITextView()
...@@ -39,6 +33,7 @@ class YHActivityTitleItemView: UIView { ...@@ -39,6 +33,7 @@ class YHActivityTitleItemView: UIView {
lable0.isScrollEnabled = false lable0.isScrollEnabled = false
lable0.isEditable = false lable0.isEditable = false
lable0.isSelectable = false lable0.isSelectable = false
lable0.backgroundColor = .clear
return lable0 return lable0
}() }()
...@@ -94,9 +89,29 @@ class YHActivityTitleItemView: UIView { ...@@ -94,9 +89,29 @@ class YHActivityTitleItemView: UIView {
extension YHActivityTitleItemView { extension YHActivityTitleItemView {
func updateUI() {
guard let model = dataModel else {
return
}
nameTextView.text = model.name
if model.tag == 1 {
nameTextView.attributed.text = """
\(model.name + " ", .foreground(UIColor.mainTextColor), .font(UIFont.PFSC_B(ofSize:24)))\(.image(UIImage(named: "activity_vip_icon2")!,.custom(.offset(CGPoint(x: 0, y: -7)), size: .init(width: 44, height: 34))))
"""
} else {
nameTextView.attributed.text = """
\(model.name, .foreground(UIColor.mainTextColor), .font(UIFont.PFSC_B(ofSize:24)))
"""
}
timeLable.text = String(model.beginTime)
addressLable.text = model.place
navAddressLable.text = model.guidance
}
func setupUI() { func setupUI() {
// addSubview(nameLabel)
addSubview(nameTextView) addSubview(nameTextView)
addSubview(timeStaticLable) addSubview(timeStaticLable)
addSubview(timeLable) addSubview(timeLable)
......
...@@ -22,14 +22,48 @@ class YHActivityViewModel: YHBaseViewModel { ...@@ -22,14 +22,48 @@ class YHActivityViewModel: YHBaseViewModel {
var arrActivityListData : [YHActivityModel] = [] var arrActivityListData : [YHActivityModel] = []
//2.活动详情
var activityDetailModel : YHActivityDetailModel?
//2. //3.
} }
extension YHActivityViewModel { extension YHActivityViewModel {
/* /*
*活动详情
*/
func getActivityDetailData(activityID : String ,callBackBlock:@escaping (_ success: Bool,_ error:YHErrorModel?)->()) {
// var params: [String : Any] = ["id": activityID]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Activity.detailApi + "/" + activityID
let _ = YHNetRequest.getRequest(url: strUrl) { [weak self] json, code in
guard let self = self else { return }
//1. json字符串 转 对象
if json.code == 200 {
let dic = json.data
guard let result = YHActivityDetailModel.deserialize(from: dic as? Dictionary) else {
self.activityDetailModel = nil
callBackBlock(false,nil)
return
}
self.activityDetailModel = result
callBackBlock(true, nil)
} else {
self.activityDetailModel = nil
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
callBackBlock(false, error)
}
} failBlock: { err in
self.activityDetailModel = nil
callBackBlock(false,err)
}
}
/*
*活动列表
firstFlag true - 首次 false - 更多 firstFlag true - 首次 false - 更多
*/ */
func getActivityList(firstFlag : Bool,callBackBlock:@escaping (_ success: Bool,_ error:YHErrorModel?)->()) { func getActivityList(firstFlag : Bool,callBackBlock:@escaping (_ success: Bool,_ error:YHErrorModel?)->()) {
......
...@@ -13,6 +13,11 @@ class YHAllApiName { ...@@ -13,6 +13,11 @@ class YHAllApiName {
struct Activity { struct Activity {
//活动列表 //活动列表
static let listApi = "super-app/activity/list" static let listApi = "super-app/activity/list"
//活动详情
static let detailApi = "super-app/activity/detail"
} }
......
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Rectangle 346241363@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "Rectangle 346241363@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