//
|
// PavilionDetailVC.swift
|
// XQMuse
|
//
|
// Created by 无故事王国 on 2024/8/19.
|
//
|
|
import UIKit
|
import JQTools
|
import WebKit
|
import MapKit
|
|
class PavilionDetailVC: BaseVC {
|
|
@IBOutlet weak var scrollView: UIScrollView!
|
@IBOutlet weak var webView: WKWebView!
|
@IBOutlet weak var view_bannerBg: CommonBannerView!
|
@IBOutlet weak var label_title: UILabel!
|
@IBOutlet weak var label_phone: UILabel!
|
@IBOutlet weak var label_address: UILabel!
|
@IBOutlet weak var label_openTime: UILabel!
|
@IBOutlet weak var cons_webHei: NSLayoutConstraint!
|
|
private var barStyle:UIStatusBarStyle = .lightContent
|
private var id:Int!
|
private var detailModel:PavilionDetailModel?
|
|
override func viewWillAppear(_ animated: Bool) {
|
super.viewWillAppear(animated)
|
(navigationItem.leftBarButtonItem?.customView as? UIButton)?.setImage(UIImage(named: "btn_back")?.withTintColor(.white), for: .normal)
|
}
|
|
required init(id:Int) {
|
super.init(nibName: nil, bundle: nil)
|
self.id = id
|
}
|
|
required init?(coder: NSCoder) {
|
fatalError("init(coder:) has not been implemented")
|
}
|
|
override func viewDidLoad() {
|
super.viewDidLoad()
|
title = "疗愈馆详情"
|
scrollView.contentInsetAdjustmentBehavior = .never
|
webView.scrollView.isScrollEnabled = false
|
scrollView.delegate = self
|
|
Services.getPavlilonDetail(id: id).subscribe(onNext: {data in
|
if let m = data.data{
|
self.detailModel = m
|
self.label_title.text = m.hallName
|
self.label_phone.text = m.contactNumber
|
self.label_address.text = m.addressDetail
|
self.label_openTime.text = "营业时间:\(m.businessHours)"
|
|
let bannerUrl = m.detailBannerUrl.components(separatedBy: ",").filter({$0.jq_isURL})
|
if bannerUrl.count > 0{
|
var items = [CommonBannerModel]()
|
for (index,v) in bannerUrl.enumerated(){
|
items.append(CommonBannerModel(index: index, id: index, name: nil, resource: v.jq_urlEncoded(), mediaType: .imageUrl))
|
}
|
self.view_bannerBg.setItems(items: items)
|
self.view_bannerBg.collectionView.backgroundColor = .clear
|
}
|
|
self.webView.loadHTMLString(m.briefIntroduction.jq_wrapHtml(), baseURL: nil)
|
}
|
}).disposed(by: disposeBag)
|
}
|
|
|
@IBAction func gotoThereAction(_ sender: Any) {
|
|
guard let model = detailModel else {return}
|
|
let items = JQ_MapNavigationTool.mapList()
|
var formatItems = items.map { type in
|
switch type {
|
case .BaiduMap:return "百度地图" //BD-09
|
case .Amap:return "高德地图" //GCJ-02
|
case .GoogleMap:return "谷歌地图" //GCJ-02
|
case .qqMap:return "腾讯地图" //GCJ-02
|
}
|
}
|
formatItems.insert("苹果地图", at: 0)
|
|
CommonAlertSheetView.show(title:"请选择地图",items: formatItems) { index in
|
switch index{
|
case 0:
|
let item = MKMapItem(placemark: MKPlacemark(coordinate: CLLocationCoordinate2D(latitude: CLLocationDegrees(model.latitude), longitude: CLLocationDegrees(model.longitude))))
|
item.name = model.hallName
|
item.openInMaps(launchOptions: [MKLaunchOptionsDirectionsModeKey:MKLaunchOptionsDirectionsModeDriving])
|
case 1:
|
var components = URLComponents()
|
components.scheme = "iosamap"
|
components.host = "path"
|
components.queryItems = [URLQueryItem]()
|
components.queryItems?.append(URLQueryItem(name: "sourceApplication", value: "疗愈"))
|
components.queryItems?.append(URLQueryItem(name: "dlat", value: "\(model.latitude)"))
|
components.queryItems?.append(URLQueryItem(name: "dlon", value: "\(model.longitude)"))
|
components.queryItems?.append(URLQueryItem(name: "dname", value: model.hallName))
|
UIApplication.shared.open(components.url!)
|
case 2:
|
var components = URLComponents()
|
components.scheme = "comgooglemaps"
|
components.host = ""
|
components.queryItems = [URLQueryItem]()
|
components.queryItems?.append(URLQueryItem(name: "daddr", value: "\(model.latitude),\(model.longitude)"))
|
components.queryItems?.append(URLQueryItem(name: "zoom", value: "14"))
|
components.queryItems?.append(URLQueryItem(name: "views", value: "traffic"))
|
components.queryItems?.append(URLQueryItem(name: "resume", value: "true"))
|
UIApplication.shared.open(components.url!)
|
case 3:
|
var components = URLComponents()
|
components.scheme = "baidumap"
|
components.host = "map"
|
components.path = "/direction"
|
components.queryItems = [URLQueryItem]()
|
components.queryItems?.append(URLQueryItem(name: "origin", value: "{{我的位置}}"))
|
components.queryItems?.append(URLQueryItem(name: "destination", value: "latlng:\(model.latitude),\(model.longitude)|name:\(model.hallName)"))
|
components.queryItems?.append(URLQueryItem(name: "coord_type", value: "gcj02"))
|
components.queryItems?.append(URLQueryItem(name: "mode", value: "driving"))
|
|
UIApplication.shared.open(components.url!)
|
case 4:
|
var components = URLComponents()
|
components.scheme = "qqmap"
|
components.host = "map"
|
components.path = "/routeplan"
|
components.queryItems = [URLQueryItem]()
|
components.queryItems?.append(URLQueryItem(name: "fromcoord", value: "CurrentLocation"))
|
components.queryItems?.append(URLQueryItem(name: "type", value: "drive"))
|
components.queryItems?.append(URLQueryItem(name: "to", value: model.hallName))
|
components.queryItems?.append(URLQueryItem(name: "tocoord", value: "\(model.latitude),\(model.longitude)"))
|
UIApplication.shared.open(components.url!)
|
default:break
|
}
|
}
|
}
|
|
|
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: { [unowned self](height) in
|
if let height = height{
|
self.cons_webHei.constant = height
|
}
|
}).disposed(by: disposeBag)
|
|
}
|
|
|
override var preferredStatusBarStyle: UIStatusBarStyle{
|
return barStyle
|
}
|
|
}
|
|
extension PavilionDetailVC:UIScrollViewDelegate{
|
func scrollViewDidScroll(_ scrollView: UIScrollView) {
|
|
let v = min(scrollView.contentOffset.y / JQ_NavBarHeight, 1)
|
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()
|
}
|
|
// if let table = scrollView as? UITableView{
|
// if v > 0{
|
// table.contentInset = UIEdgeInsets(top: JQ_NavBarHeight + 9, left: 0, bottom: 118, right: 0)
|
// }else{
|
// table.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 118, right: 0)
|
// }
|
// }
|
|
// let offSetY = scrollView.contentOffset.y + CGRectGetHeight(scrollView.frame) / 2;
|
|
// if let currentIndex = tableView?.indexPathForRow(at: CGPoint(x: 0, y: offSetY)){
|
//
|
// if !isAnimationing{
|
// if currentShowIndex != currentIndex{
|
// currentShowIndex = currentIndex
|
// pageMenu.selectedItemIndex = currentIndex.row
|
// }
|
// }
|
// }
|
}
|
}
|