//
|
// HomeVC.swift
|
// XQMuse
|
//
|
// Created by 无故事王国 on 2024/8/12.
|
//
|
|
import UIKit
|
import JQTools
|
import RxSwift
|
import MediaPlayer
|
import MJRefresh
|
import SDWebImage
|
import CoreTelephony
|
import AVKit
|
|
let SetBGMSuccess_Noti = Notification.Name.init("SetBGMSuccess_Noti")
|
let ToShowTree_Noti = Notification.Name.init("ToShowTree_Noti")
|
let ReloadData_Noti = Notification.Name.init("ReloadData_Noti")
|
|
struct TitleItem{
|
var id = 0
|
var title = ""
|
var subTitle = ""
|
var hasMore:Bool = false
|
var coverImage:String?
|
}
|
|
class HomeViewModel{
|
var homeTopMenuItems = [HomeTopMenuItem]()
|
var homeBottomMenuItems = [HomeTopMenuItem]()
|
var todyModel:ToDayMeditationModel?
|
var privateTodyModels = [MeditationModel]()
|
var meditationList = [MeditationListModel]()
|
}
|
|
class HomeVC: BaseVC {
|
private var tableView:UITableView!
|
private let topMenuView = HomeTopMenuView.jq_loadNibView()
|
private var titleItems = [TitleItem]()
|
private var viewModel = HomeViewModel()
|
private var timer:Timer?
|
private var needPopToTree:Bool = false //是否需跳转到树苗
|
private var cellularData:CTCellularData!
|
|
override func viewDidAppear(_ animated: Bool) {
|
super.viewDidAppear(animated)
|
|
//获取用户信息
|
if !(UserViewModel.getLoginInfo()?.accessToken.isEmpty ?? true){
|
Services.isFirst().subscribe(onNext: {[weak self]data in
|
if data.data == true{
|
var viewModel = UserDefaultSettingViewModel.getSetting()
|
viewModel?.userFirstOpenTreeTask = true
|
UserDefaultSettingViewModel.saveSetting(viewModel!)
|
self?.navigationController?.tabBarController?.selectedIndex = 2
|
self?.toPlanGuide()
|
}
|
}).disposed(by: disposeBag)
|
|
Services.getUserDetail(showProgress: false).subscribe(onNext: {data in
|
if let m = data.data{UserViewModel.saveAvatarInfo(m)}
|
}).disposed(by: disposeBag)
|
}
|
self.navigationController?.interactivePopGestureRecognizer?.isEnabled = true
|
|
if needPopToTree{
|
navigationController?.tabBarController?.selectedIndex = 2
|
needPopToTree = false
|
}
|
|
|
if AudioPlayer.getSharedInstance().bgmPlayer != nil && PayMusicVC.getCurrentStatus() != .pause{
|
AudioPlayer.getSharedInstance().bgmPlayer?.play()
|
return
|
}
|
|
|
if (AudioPlayer.getSharedInstance().scenePlayer?.timeControlStatus == .paused && UserDefaultSettingViewModel.getSetting()?.sceneMusicModel != nil) && UserViewModel.getSceneSwitch(){
|
AudioPlayer.getSharedInstance().playSceneAt(UserDefaultSettingViewModel.getSetting()!.sceneMusicModel!.audioFile)
|
}
|
|
if let meVC = (navigationController?.tabBarController?.viewControllers?.last as? BaseNav)?.viewControllers.first as? MeVC{
|
meVC.needLaunch = true
|
}
|
}
|
|
override func viewDidLoad() {
|
super.viewDidLoad()
|
|
DispatchQueue.main.asyncAfter(delay: 3.0) {
|
self.checkNewVersion()
|
}
|
|
titleItems.removeAll()
|
|
timer = Timer.scheduledTimer(timeInterval: 30, target: self, selector: #selector(autoUpdate), userInfo: nil, repeats: true)
|
RunLoop.current.add(timer!, forMode: .default)
|
|
titleItems.append(TitleItem(title: "每日疗愈", subTitle: "Daily Meditation"))
|
titleItems.append(TitleItem(title: "私人订制", subTitle: "Private Customization",hasMore: true))
|
titleItems.append(TitleItem(title: "新手冥想指南", subTitle: "Meditation guide"))
|
|
tableView.mj_header = MJRefreshNormalHeader(refreshingBlock: {
|
self.getData()
|
})
|
|
getData()
|
getBGMData()
|
|
cellularData = CTCellularData()
|
cellularData.cellularDataRestrictionDidUpdateNotifier = {[weak self] state in
|
|
switch state{
|
case .notRestricted:
|
self?.toPlanGuide()
|
DispatchQueue.main.async {
|
self?.getBGMData()
|
self?.tableView.mj_header?.beginRefreshing()
|
}
|
default:break
|
}
|
}
|
|
topMenuView.resetTopImage()
|
}
|
|
override func setUI() {
|
super.setUI()
|
|
let titleView = UIView()
|
titleView.frame = CGRect(x: 0, y: 0, width: 100, height: 40)
|
let titleL = UILabel()
|
titleL.font = Def_SourceHanSansCN_Regular(fontSize: 21)
|
titleL.text = "泉 疗 愈"
|
titleL.textAlignment = .center
|
titleL.textColor = UIColor(hexStr: "#252A23")
|
titleL.frame = CGRect(x: 0, y: 0, width: 100, height: 19)
|
|
let subTitleL = UILabel()
|
subTitleL.font = Def_Agenda_Light(fontSize: 8)
|
subTitleL.text = "XIN QUAN"
|
subTitleL.textAlignment = .center
|
subTitleL.isHidden = true
|
subTitleL.textColor = UIColor(hexStr: "#252A23")
|
subTitleL.frame = CGRect(x: 0, y: 20, width: 100, height: 19)
|
|
|
titleView.addSubview(titleL)
|
titleView.addSubview(subTitleL)
|
|
|
navigationItem.titleView = titleView
|
|
let search = UIButton(type: .custom)
|
search.setImage(UIImage(named: "btn_search"), for: .normal)
|
search.addTarget(self, action: #selector(searchAction), for: .touchUpInside)
|
search.bounds = CGRect(origin: .zero, size:CGSize(width: 50, height: 30))
|
navigationItem.leftBarButtonItem = UIBarButtonItem(customView: search)
|
|
|
let voices = UIButton(type: .custom)
|
voices.setImage(UIImage(named: "btn_voices"), for: .normal)
|
voices.addTarget(self, action: #selector(settingvoiceAction), for: .touchUpInside)
|
voices.bounds = CGRect(origin: .zero, size:CGSize(width: 50, height: 30))
|
navigationItem.rightBarButtonItem = UIBarButtonItem(customView: voices)
|
|
tableView = UITableView(frame: .zero, style: .plain)
|
tableView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 40, right: 0)
|
tableView.showsVerticalScrollIndicator = false
|
// DispatchQueue.main.async {
|
// let h = 569.0
|
// self.topMenuView.frame = CGRect(x: 0, y: 0, width: JQ_ScreenW, height: h)
|
// self.tableView.tableHeaderView = self.topMenuView
|
// }
|
|
tableView.tableHeaderView = topMenuView
|
|
tableView.register(UINib(nibName: "Home_Style_1_TCell", bundle: nil), forCellReuseIdentifier: "_Home_Style_1_TCell")
|
tableView.register(UINib(nibName: "Home_Style_2_TCell", bundle: nil), forCellReuseIdentifier: "_Home_Style_2_TCell")
|
tableView.register(UINib(nibName: "Home_Style_3_TCell", bundle: nil), forCellReuseIdentifier: "_Home_Style_3_TCell")
|
tableView.register(UINib(nibName: "Home_Style_4_TCell", bundle: nil), forCellReuseIdentifier: "_Home_Style_4_TCell")
|
|
tableView.register(UINib(nibName: "Home_Style_5_TCell", bundle: nil), forCellReuseIdentifier: "_Home_Style_5_TCell")
|
|
tableView.separatorStyle = .none
|
tableView.delegate = self
|
tableView.dataSource = self
|
if #available(iOS 15.0, *) {
|
tableView.sectionHeaderTopPadding = 0
|
} else {
|
|
}
|
tableView.register(HomeHeaderView.self, forHeaderFooterViewReuseIdentifier: "_HomeHeaderView")
|
view.addSubview(tableView)
|
tableView.snp.makeConstraints { make in
|
make.edges.equalToSuperview()
|
}
|
}
|
|
override func setRx() {
|
topMenuView.clickItemAt {[unowned self] item in
|
let vc = HomeItemListVC(topTitle: item.title, id: item.id, showType:.vertical)
|
self.push(vc: vc)
|
}
|
|
NotificationCenter.default.rx.notification(SetBGMSuccess_Noti).take(until: self.rx.deallocated).subscribe(onNext: {data in
|
self.getBGMData()
|
}).disposed(by: disposeBag)
|
|
|
NotificationCenter.default.rx.notification(LoginSuccess_Noti).take(until: self.rx.deallocated).subscribe(onNext: {data in
|
self.getBGMData()
|
}).disposed(by: disposeBag)
|
|
NotificationCenter.default.rx.notification(LoginQuit_Noti).take(until: self.rx.deallocated).subscribe(onNext: {data in
|
self.getBGMData()
|
}).disposed(by: disposeBag)
|
|
|
|
NotificationCenter.default.rx.notification(PlantGuideQuit_Noti).take(until: self.rx.deallocated).subscribe(onNext: {[weak self]data in
|
guard let weakSelf = self else { return }
|
|
weakSelf.needPopToTree = data.object as? Bool ?? false
|
weakSelf.getData()
|
|
}).disposed(by: disposeBag)
|
|
NotificationCenter.default.rx.notification(LoginSuccess_Noti).take(until: self.rx.deallocated).subscribe(onNext: {data in
|
self.getData()
|
}).disposed(by: disposeBag)
|
|
NotificationCenter.default.rx.notification(LoginQuit_Noti).take(until: self.rx.deallocated).subscribe(onNext: {data in
|
self.getData()
|
}).disposed(by: disposeBag)
|
|
|
NotificationCenter.default.rx.notification(ReloadData_Noti).take(until: self.rx.deallocated).subscribe(onNext: {data in
|
self.tableView.reloadData()
|
}).disposed(by: disposeBag)
|
}
|
|
private func getData(){
|
tableView.mj_header?.endRefreshing()
|
|
Services.getCategoryListByType(type: 1).subscribe(onNext: { data in
|
var items = [HomeTopMenuItem]()
|
for v in data.data ?? []{
|
let model = HomeTopMenuItem(id: v.id, title: v.categoryName, image: v.firstIconUrl.jq_urlEncoded(), imageFrom: .url)
|
items.append(model)
|
}
|
|
self.viewModel.homeTopMenuItems = items
|
let h = ceil(Double(items.count) / 4.0) * 119 + 20.5 + JQ_ScreenW * 1.0948
|
self.topMenuView.menu_height.constant = ceil(Double(items.count) / 4.0) * 119
|
self.tableView.tableHeaderView?.frame = CGRect(origin: .zero, size: CGSizeMake(JQ_ScreenW, h))
|
self.topMenuView.resetItems(items)
|
self.topMenuView.menu_collectionView.reloadData()
|
}).disposed(by: disposeBag)
|
|
Services.getCategoryListByType(type: 2).subscribe(onNext: { data in
|
var items = [HomeTopMenuItem]()
|
for v in data.data ?? []{
|
let model = HomeTopMenuItem(id: v.id, title: v.categoryName, image: v.secondIconUrl.jq_urlEncoded(), imageFrom: .url)
|
items.append(model)
|
}
|
self.viewModel.homeBottomMenuItems = items
|
self.tableView.reloadRows(at: [IndexPath(row: 4, section: 0)], with: .none)
|
}).disposed(by: disposeBag)
|
|
Services.getTopdayMedita().subscribe(onNext: { data in
|
self.viewModel.todyModel = data.data
|
self.tableView.reloadRows(at: [IndexPath(row: 0, section: 0)], with: .none)
|
}).disposed(by: disposeBag)
|
|
|
|
//BUDID:17184
|
let m = MeditationModel()
|
m.id = 0
|
self.viewModel.privateTodyModels = [m]
|
// if !(UserViewModel.getLoginInfo()?.accessToken.isEmpty ?? true){
|
Services.getPersonalityPlan().subscribe(onNext: { data in
|
if let m = data.data{
|
if m.count > 0{
|
self.viewModel.privateTodyModels = m
|
}
|
self.tableView.reloadRows(at: [IndexPath(row: 1, section: 0)], with: .none)
|
}
|
}).disposed(by: disposeBag)
|
// }else{
|
// self.tableView.reloadData()
|
// }
|
|
Services.getMeditationAndCateList().subscribe(onNext: { data in
|
if let m = data.data{
|
self.viewModel.meditationList.removeAll()
|
self.titleItems.removeAll()
|
if self.viewModel.todyModel?.isShow == 1{
|
self.titleItems.append(TitleItem(title: "泉疗愈微电影", subTitle: "Spring Healing Microfilm"))
|
}else{
|
self.titleItems.append(TitleItem(title: "每日疗愈", subTitle: "Daily Meditation"))
|
}
|
|
self.titleItems.append(TitleItem(title: "私人订制", subTitle: "Private Customization",hasMore: true))
|
self.titleItems.append(TitleItem(title: "新手冥想指南", subTitle: "Meditation guide",hasMore: true))
|
|
|
self.viewModel.meditationList = m
|
for v in self.viewModel.meditationList{
|
if v.clientMeditationCategoryVO?.categoryName.isEmpty ?? true{continue}
|
self.titleItems.append(TitleItem(title: v.clientMeditationCategoryVO?.categoryName ?? "", subTitle: v.clientMeditationCategoryVO?.description ?? "",hasMore:true))
|
}
|
self.tableView.reloadData()
|
}
|
}).disposed(by: disposeBag)
|
|
Services.getLunchPage().subscribe(onNext: {data in
|
|
if let url = data.data{
|
let path = DocumentPath! + "/launchScreen/"
|
let image = SDImageCache(namespace: url.jq_md5String(), diskCacheDirectory: path)
|
let loader = SDImageLoadersManager.shared
|
let manager = SDWebImageManager(cache: image, loader: loader)
|
|
//不存在缓存
|
if image.imageFromDiskCache(forKey: url) == nil{
|
manager.loadImage(with: URL(string: url), progress: nil) { image, _, _, _, complete, _ in
|
LaunchImageHelper.changeAllLaunchImageToPortrait(image)
|
}
|
}
|
else{
|
//取缓存
|
if let data = image.diskImageData(forKey: url){
|
let image = UIImage(data: data)
|
LaunchImageHelper.changeAllLaunchImageToPortrait(image)
|
}
|
}
|
}
|
|
}).disposed(by: disposeBag)
|
}
|
|
private func getBGMData(){
|
if UserViewModel.getLoginInfo()?.accessToken.isEmpty ?? true{
|
Services.getBGM().subscribe(onNext: {[weak self]data in
|
if let m = data.data,let model = m.first{
|
if var userDefaultSettingModel = UserDefaultSettingViewModel.getSetting(){
|
userDefaultSettingModel.sceneMusicModel = model
|
UserDefaultSettingViewModel.saveSetting(userDefaultSettingModel)
|
self?.updateBGMData(userDefaultSettingModel: userDefaultSettingModel)
|
self?.topMenuView.resetTopImage()
|
}
|
}
|
}).disposed(by: disposeBag)
|
}else{
|
Services.quryUserSceneMusic().subscribe(onNext: {data in
|
if var userDefaultSettingModel = UserDefaultSettingViewModel.getSetting(){
|
userDefaultSettingModel.sceneMusicModel = data.data
|
UserDefaultSettingViewModel.saveSetting(userDefaultSettingModel)
|
self.updateBGMData(userDefaultSettingModel: userDefaultSettingModel)
|
self.topMenuView.resetTopImage()
|
}
|
}).disposed(by: disposeBag)
|
}
|
}
|
|
private func toPlanGuide(){
|
if UserDefaultSettingViewModel.getSetting()?.userFirstLaunch ?? true{
|
DispatchQueue.main.async {[weak self] in
|
guard let weakSelf = self else { return }
|
let vc = LoginTreatyVC()
|
vc.topIndex = 0
|
vc.clickHandle { state in
|
if !state{
|
exit(0)
|
}else{
|
if var m = UserDefaultSettingViewModel.getSetting(){
|
m.userFirstLaunch = false
|
UserDefaultSettingViewModel.saveSetting(m)
|
}
|
//跳转计划引导
|
let nav = BaseNav(rootViewController: PlanGuideVC(isFromFist: true))
|
nav.modalPresentationStyle = .fullScreen
|
weakSelf.present(nav, animated: true)
|
}
|
}
|
vc.modalPresentationStyle = .custom
|
weakSelf.present(vc, animated: true)
|
}
|
}
|
}
|
|
private func updateBGMData(userDefaultSettingModel:UserDefaultSettingModel){
|
if AudioPlayer.getSharedInstance().bgmPlayer != nil && PayMusicVC.getCurrentStatus() != .pause{
|
AudioPlayer.getSharedInstance().bgmPlayer?.play()
|
return
|
}
|
|
if (AudioPlayer.getSharedInstance().scenePlayer == nil || AudioPlayer.getSharedInstance().scenePlayer?.timeControlStatus == .paused) && UserViewModel.getSceneSwitch(){
|
AudioPlayer.getSharedInstance().playSceneAt(userDefaultSettingModel.sceneMusicModel!.audioFile)
|
}
|
}
|
|
@objc func autoUpdate() {
|
guard let endPlayTime = viewModel.todyModel?.endPlayTime, !endPlayTime.isEmpty else { return }
|
|
let todayEndDay = Date().jq_format("yyyy-MM-dd") + " \(endPlayTime)"
|
let endDayInterval = Date.jq_StringToTimeInterval(todayEndDay, "yyyy-MM-dd HH:mm:ss")
|
|
if Date().timeIntervalSince1970 > endDayInterval {
|
Services.getTopdayMedita().subscribe(onNext: { [weak self] data in
|
guard let self = self else { return }
|
self.viewModel.todyModel = data.data
|
|
if data.data?.isShow == 1{
|
self.titleItems[0] = TitleItem(title: "泉疗愈微电影", subTitle: "Spring Healing Microfilm")
|
}else{
|
self.titleItems[0] = TitleItem(title: "每日疗愈", subTitle: "Daily Meditation")
|
}
|
self.tableView.reloadData()
|
}).disposed(by: disposeBag)
|
}
|
}
|
|
@objc func searchAction(){
|
let vc = SearchVC(serchType: .muse)
|
push(vc: vc)
|
}
|
|
@objc func settingvoiceAction(){
|
let vc = BackgroundVoiceVC(isFromFist: false)
|
push(vc: vc)
|
}
|
|
@objc func jumpMoreAction(_ sender:UIButton){
|
switch sender.tag {
|
case 201:
|
//跳转计划引导
|
let nav = BaseNav(rootViewController: PlanGuideVC(isFromFist: false))
|
nav.modalPresentationStyle = .fullScreen
|
present(nav, animated: true)
|
break
|
case 202:
|
let vc = WebVC(type: .guide)
|
vc.title = "泉疗愈"
|
push(vc: vc)
|
default:
|
let topTitle = titleItems[sender.tag - 200].title
|
let m = viewModel.meditationList[sender.tag - 200 - 3]
|
if let id = m.clientMeditationCategoryVO?.id{
|
let vc = HomeItemListVC(topTitle: topTitle, id: id,showType: .vertical)
|
push(vc: vc)
|
}
|
}
|
}
|
|
private func checkNewVersion(){
|
JQTool.checkVersion(appid: AppleID){ stat, model, url in
|
let version = UserDefaults.standard.value(forKey: "ignoreVersion") as? String
|
if stat && version != model?.version ?? "1.0.0"{
|
DispatchQueue.main.async {
|
if let m = model{
|
UpdateVersionView.show(model:m)
|
}
|
}
|
}
|
}
|
}
|
|
deinit {
|
// 使定时器失效
|
timer?.invalidate()
|
|
// 移除通知中心观察者
|
NotificationCenter.default.removeObserver(self)
|
}
|
|
}
|
|
extension HomeVC:UITableViewDelegate & UITableViewDataSource{
|
|
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
|
if indexPath.section == 0{
|
guard let m = viewModel.todyModel else {
|
alert(msg: "平台暂未设置今日疗愈");return
|
}
|
|
//停止播放背景音
|
AudioPlayer.getSharedInstance().pauseScene()
|
|
if m.isShow == 1{
|
if let videoUrl = m.meditationVideo?.videoUrl.jq_urlEncoded(){
|
let videoPlayVC = VideoPlayVC(playUrl: videoUrl,titleL: m.meditationVideo?.title ?? "")
|
videoPlayVC.modalPresentationStyle = .fullScreen
|
push(vc: videoPlayVC)
|
}
|
return
|
}
|
|
|
let audioPlayer = AudioPlayer.getSharedInstance()
|
let isSameMeditation = audioPlayer.meditationModel?.id == m.meditationId
|
let isPaused = audioPlayer.bgmPlayer?.timeControlStatus == .paused
|
|
if isSameMeditation {
|
if isPaused {
|
audioPlayer.bgmPlayer?.play()
|
// audioPlayer.masterPlayer?.play()
|
PayMusicVC.updateStatus(.playing)
|
viewModel.todyModel?.playAtMe = true
|
} else {
|
audioPlayer.bgmPlayer?.pause()
|
// audioPlayer.masterPlayer?.pause()
|
PayMusicVC.updateStatus(.pause)
|
viewModel.todyModel?.playAtMe = false
|
}
|
DispatchQueue.main.asyncAfter(deadline: .now() + 0.4) {
|
self.tableView.reloadData()
|
}
|
} else {
|
// 游客模式都能播放
|
if let detailId = m.clientMeditationVO?.id{
|
Services.getMeditationDetail(id: detailId).subscribe(onNext: { [weak self] data in
|
guard let self = self, let m = data.data else { return }
|
|
if m.chargeType == .payment{
|
if UserViewModel.getLoginInfo()?.accessToken.isEmpty ?? true{
|
sceneDelegate?.needLogin();return
|
}else if m.isBuy == .no{
|
let vc = PaymentOrderVC(museItemModel: m, type: .muse, showType: DisplayType.horizontal)
|
jq_push(vc: vc);return
|
}
|
}
|
|
if m.chargeType == .vipFree && UserViewModel.getAvatarInfo().isVip != .yes{
|
let vipCenterVC = VIPCenterVC()
|
jq_push(vc: vipCenterVC)
|
return
|
}
|
|
if audioPlayer.meditationModel?.id == m.id && audioPlayer.bgmPlayer?.timeControlStatus == .playing {
|
return
|
}
|
audioPlayer.playBGMAt(firstPlayIndex: 0, model: m, delegate: self)
|
PayMusicVC.show(model: m, isHidden: false)
|
self.viewModel.todyModel?.playAtMe = true
|
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
|
self.tableView.reloadData()
|
}
|
}).disposed(by: disposeBag)
|
}
|
}
|
}
|
|
if indexPath.section == 2{
|
let vc = WebVC(type: .guide)
|
vc.title = "泉疗愈"
|
push(vc: vc)
|
}
|
}
|
|
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
if indexPath.section == 0 && indexPath.row == 0{
|
//每日疗愈 & 泉疗愈微电影
|
let cell = tableView.dequeueReusableCell(withIdentifier: "_Home_Style_1_TCell") as! Home_Style_1_TCell
|
if let m = viewModel.todyModel,m.id != 0{
|
cell.setTodayMeditationModel(m)
|
cell.view_data.isHidden = false
|
}else{
|
cell.img_cover.image = UIImage(named: "bg_today")
|
cell.view_data.isHidden = true
|
}
|
|
cell.setplaying()
|
return cell
|
}else if indexPath.section == 1 && indexPath.row == 0{
|
//私人定制
|
let cell = tableView.dequeueReusableCell(withIdentifier: "_Home_Style_4_TCell") as! Home_Style_4_TCell
|
cell.style = .style1
|
cell.setModels(viewModel.privateTodyModels,showType: .horizontal)
|
return cell
|
}else if indexPath.section == 2 && indexPath.row == 0{
|
// 新手冥想指南
|
let cell = tableView.dequeueReusableCell(withIdentifier: "_Home_Style_2_TCell") as! Home_Style_2_TCell
|
cell.imgView.image = UIImage(named: "bg_guide_home")
|
cell.view_shadow.isHidden = true
|
return cell
|
}else {
|
|
let index = indexPath.section - 3
|
if index == 0 && indexPath.row != 0{
|
let cell = tableView.dequeueReusableCell(withIdentifier: "_Home_Style_5_TCell") as! Home_Style_5_TCell
|
cell.setHomeTopMenuItem(viewModel.homeBottomMenuItems)
|
return cell
|
}else{
|
let m = viewModel.meditationList[index]
|
if m.clientMeditationCategoryVO!.showType == .horizontal{
|
let cell = tableView.dequeueReusableCell(withIdentifier: "_Home_Style_4_TCell") as! Home_Style_4_TCell
|
cell.style = .style2
|
cell.setModels(m.clientMeditationVOList,showType: .horizontal)
|
return cell
|
}else if m.clientMeditationCategoryVO!.showType == .vertical{
|
let cell = tableView.dequeueReusableCell(withIdentifier: "_Home_Style_3_TCell") as! Home_Style_3_TCell
|
cell.setModels(m.clientMeditationVOList,showType: .vertical)
|
return cell
|
}
|
}
|
return UITableViewCell()
|
}
|
}
|
|
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
|
if section - 3 == 0{
|
return 2
|
}
|
return 1
|
}
|
|
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
|
if indexPath.section == 0 || indexPath.section == 1{
|
return JQ_ScreenW * 0.551
|
}else if indexPath.section == 2{
|
return 0
|
}else{
|
let index = indexPath.section - 3
|
let m = viewModel.meditationList[index]
|
|
if index == 0 && indexPath.row != 0 {
|
return 236
|
}
|
|
if m.clientMeditationCategoryVO?.showType == .horizontal{
|
return 328
|
}else{
|
return 213
|
}
|
}
|
}
|
|
func numberOfSections(in tableView: UITableView) -> Int {
|
return titleItems.count
|
}
|
|
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
|
return 80.5
|
}
|
|
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
|
let headerView = tableView.dequeueReusableHeaderFooterView(withIdentifier: "_HomeHeaderView") as! HomeHeaderView
|
headerView.setTitle(titleItems[section].title, subTitle: titleItems[section].subTitle)
|
headerView.btn_more.isHidden = !titleItems[section].hasMore
|
headerView.btn_more.tag = section + 200
|
headerView.btn_more.addTarget(self, action: #selector(jumpMoreAction(_:)), for: .touchUpInside)
|
|
if section == 1{
|
headerView.btn_more.setImage(UIImage(named: "btn_more"), for: .normal)
|
}else if section == 2{
|
headerView.btn_more.setImage(UIImage(named: "icon_guide_more"), for: .normal)
|
}else{
|
headerView.btn_more.setImage(UIImage(named: "icon_exchange"), for: .normal)
|
}
|
return headerView
|
}
|
|
}
|
|
extension HomeVC:UIScrollViewDelegate{
|
func scrollViewDidScroll(_ scrollView: UIScrollView) {
|
// let v = min(scrollView.contentOffset.y / JQ_NavBarHeight, 1)
|
// navigationController?.navigationBar.standardAppearance.backgroundColor = .white.withAlphaComponent(v)
|
navigationController?.navigationBar.standardAppearance.backgroundColor = .white
|
navigationController?.navigationBar.scrollEdgeAppearance?.backgroundColor = .white
|
}
|
}
|
|
extension HomeVC:PayMusicDelegate{
|
func playState(_ state: PlayMusicState) {
|
|
}
|
|
|
}
|