//
|
// CourseDetialOfflineVC.swift
|
// XQMuse
|
//
|
// Created by 无故事王国 on 2024/11/6.
|
//
|
|
import UIKit
|
import WebKit
|
import JQTools
|
|
class CourseDetialOfflineVC: BaseVC {
|
@IBOutlet weak var scrollView: UIScrollView!
|
@IBOutlet weak var img_cover: UIImageView!
|
@IBOutlet weak var view_video: UIView!
|
@IBOutlet weak var label_title: UILabel!
|
@IBOutlet weak var label_tutor: UILabel!
|
@IBOutlet weak var label_address: UILabel!
|
@IBOutlet weak var webView: WKWebView!
|
@IBOutlet weak var cons_webHei: NSLayoutConstraint!
|
@IBOutlet weak var img_cusomter: UIImageView!
|
@IBOutlet weak var view_customer: UIView!
|
|
private var videoView:VideoView?
|
private var barStyle:UIStatusBarStyle = .lightContent
|
private var courseId:Int!
|
private var courseDetailModel:CourseModel?
|
private var collect_bitem:UIBarButtonItem!
|
private var share_bitem:UIBarButtonItem!
|
private var section0Height:Double = 0
|
|
init(courseId:Int) {
|
super.init(nibName: nil, bundle: nil)
|
self.courseId = courseId
|
}
|
|
required init?(coder: NSCoder) {
|
fatalError("init(coder:) has not been implemented")
|
}
|
|
override func viewWillAppear(_ animated: Bool) {
|
super.viewWillAppear(animated)
|
(navigationItem.leftBarButtonItem?.customView as? UIButton)?.setImage(UIImage(named: "btn_back")?.withTintColor(.white), for: .normal)
|
navigationController?.navigationBar.scrollEdgeAppearance?.backgroundColor = .clear
|
navigationController?.navigationBar.standardAppearance.backgroundColor = .clear
|
}
|
|
override func viewDidLoad() {
|
super.viewDidLoad()
|
title = "课程详情"
|
|
getData()
|
}
|
|
override func setUI() {
|
view_video.isHidden = true
|
scrollView.delegate = self
|
collect_bitem = UIBarButtonItem(image: UIImage(named: "btn_collect"), style: .plain, target: self, action: #selector(collectionAction))
|
collect_bitem.tintColor = .white
|
share_bitem = UIBarButtonItem(image: UIImage(named: "btn_share"), style: .plain, target: self, action: #selector(shareAction))
|
share_bitem.tintColor = .white
|
share_bitem.imageInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 15)
|
navigationItem.rightBarButtonItems = [share_bitem,collect_bitem]
|
|
webView.scrollView.isScrollEnabled = false
|
webView.scrollView.backgroundColor = .clear
|
webView.isOpaque = false
|
view_customer.jq_cornerRadius = 10
|
scrollView.contentInsetAdjustmentBehavior = .never
|
|
let customerBtn = UIButton(type: .custom)
|
customerBtn.setImage(UIImage(named: "btn_customer"), for: .normal)
|
customerBtn.addTarget(self, action: #selector(showCustomerAction), for: .touchUpInside)
|
view.addSubview(customerBtn)
|
customerBtn.snp.makeConstraints { make in
|
make.right.equalToSuperview().offset(20)
|
make.centerY.equalToSuperview()
|
}
|
}
|
|
override func setRx() {
|
webView.scrollView.rx.observe(CGSize.self, "contentSize").map { (size) -> CGFloat? in
|
if let size = size{
|
return size.height
|
}
|
return nil
|
}.subscribe(onNext: { [weak self](height) in
|
if let height = height{
|
if height > self?.section0Height ?? 0{
|
self?.section0Height = height
|
self?.cons_webHei.constant = height
|
}
|
}
|
}).disposed(by: disposeBag)
|
}
|
|
private func getData(){
|
Services.getCourseDetail(courseId: courseId).subscribe(onNext: {[weak self] data in
|
guard let weakSelf = self else { return }
|
if let m = data.data{
|
weakSelf.courseDetailModel = m
|
weakSelf.collect_bitem.image = m.isCollect == .yes ? UIImage(named: "btn_collect_1_s"):UIImage(named: "btn_collect")
|
weakSelf.collect_bitem.tintColor = m.isCollect == .yes ? UIColor(hexString: "#fe5b60"):.white
|
|
weakSelf.label_title.text = m.courseTitle
|
weakSelf.label_tutor.text = "导师 " + m.tutor
|
weakSelf.label_address.text = m.address + m.addressDetail
|
weakSelf.img_cover.sd_setImage(with: URL(string: m.coverUrl.jq_urlEncoded()))
|
weakSelf.webView.loadHTMLString(m.briefIntroduction.jq_wrapHtml(edge: UIEdgeInsets(top: 0, left: 8, bottom: 0, right: 8)), baseURL: nil)
|
|
weakSelf.img_cusomter.sd_setImage(with: URL(string: m.wxQrCode.jq_urlEncoded()))
|
|
if m.detailUrl.jq_isVideo{
|
weakSelf.videoView = VideoView(url: m.detailUrl,autoPlay: false,needFirstImage: true, delegate: self!)
|
weakSelf.view_video.isHidden = false
|
weakSelf.view_video.addSubview(weakSelf.videoView!)
|
weakSelf.videoView!.snp.makeConstraints { make in
|
make.edges.equalToSuperview()
|
}
|
|
if #available(iOS 15.0, *) {
|
weakSelf.navigationController!.navigationBar.standardAppearance.titleTextAttributes = [.foregroundColor:UIColor.white,.font:Def_NavFont]
|
weakSelf.navigationController!.navigationBar.scrollEdgeAppearance?.titleTextAttributes = [.foregroundColor:UIColor.white,.font:Def_NavFont]
|
}else{
|
weakSelf.navigationController!.navigationBar.setBackgroundImage(UIImage(), for: .default)
|
weakSelf.navigationController!.navigationBar.shadowImage = UIImage()
|
}
|
|
}else{
|
weakSelf.scrollView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
|
weakSelf.navigationController?.navigationBar.standardAppearance.backgroundColor = .white
|
weakSelf.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor:Def_NavFontColor,.font:Def_NavFont]
|
weakSelf.barStyle = .darkContent
|
weakSelf.setNeedsStatusBarAppearanceUpdate()
|
weakSelf.collect_bitem.tintColor = .black
|
weakSelf.share_bitem.tintColor = .black
|
weakSelf.scrollView.contentInsetAdjustmentBehavior = .always
|
(weakSelf.navigationItem.leftBarButtonItem?.customView as? UIButton)?.setImage(UIImage(named: "btn_back")?.withTintColor(.black), for: .normal)
|
}
|
}
|
}).disposed(by: disposeBag)
|
}
|
|
@objc func showCustomerAction(){
|
if let image = img_cusomter.image{
|
CourseDetialCustomerView.show(customerImage: image)
|
}
|
}
|
|
|
@objc func collectionAction(){
|
Services.clouseFavorite(id: courseId).subscribe(onNext: {[weak self]data in
|
self?.courseDetailModel?.isCollect.troggle()
|
if self?.courseDetailModel?.isCollect == .yes{
|
alertSuccess(msg: "收藏成功")
|
self?.collect_bitem.image = UIImage(named: "btn_collect_1_s")
|
self?.collect_bitem.tintColor = UIColor(hexString: "fe5b60")
|
}else{
|
alertSuccess(msg: "已取消收藏")
|
self?.collect_bitem.image = UIImage(named: "btn_collect")
|
self?.collect_bitem.tintColor = .white
|
}
|
}).disposed(by: disposeBag)
|
}
|
|
@objc func shareAction(){
|
guard let m = courseDetailModel else{return}
|
|
let path = courseDetailModel!.courseType == .offline ? "/courseDetail/offLine":"/courseDetail/onLine"
|
let string = String(format: "%@%@?courseId=%ld", ShareUrl,path,m.id)
|
ShareView.show(URL(string: string)!,title: "传递心灵温暖,一起感受疗愈力量",desc: m.description)
|
}
|
|
override var preferredStatusBarStyle: UIStatusBarStyle{
|
return barStyle
|
}
|
}
|
|
extension CourseDetialOfflineVC:UIScrollViewDelegate{
|
|
func scrollViewDidScroll(_ scrollView: UIScrollView) {
|
|
var v = min(scrollView.contentOffset.y / JQ_NavBarHeight, 1)
|
if view_video.isHidden{v = 1.0;return}
|
|
navigationController?.navigationBar.standardAppearance.backgroundColor = .white.withAlphaComponent(v)
|
|
if v > 0{
|
(navigationItem.leftBarButtonItem?.customView as? UIButton)?.setImage(UIImage(named: "btn_back")?.withTintColor(.black.withAlphaComponent(v)), for: .normal)
|
|
(navigationItem.rightBarButtonItem?.customView as? UIButton)?.setImage(UIImage(named: "btn_back")?.withTintColor(.black.withAlphaComponent(v)), for: .normal)
|
collect_bitem.tintColor = .black
|
share_bitem.tintColor = .black
|
|
self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor:Def_NavFontColor.withAlphaComponent(v),.font:Def_NavFont]
|
barStyle = .darkContent
|
|
}else{
|
collect_bitem.tintColor = self.courseDetailModel?.isCollect == .yes ? UIColor(hexString: "#fe5b60"):.white
|
share_bitem.tintColor = .white
|
|
(navigationItem.leftBarButtonItem?.customView as? UIButton)?.setImage(UIImage(named: "btn_back")?.withTintColor(.white), for: .normal)
|
self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor:UIColor.white,.font:Def_NavFont]
|
}
|
|
if v == 1{
|
barStyle = .darkContent
|
setNeedsStatusBarAppearanceUpdate()
|
}else{
|
barStyle = .lightContent
|
setNeedsStatusBarAppearanceUpdate()
|
}
|
}
|
}
|
|
extension CourseDetialOfflineVC:CLPlayerDelegate{
|
|
}
|