//
|
// PlanGuideVC.swift
|
// XQMuse
|
//
|
// Created by 无故事王国 on 2024/8/29.
|
//
|
|
import UIKit
|
import AVFoundation
|
import JQTools
|
|
let PlantGuideQuit_Noti = Notification.Name.init(rawValue: "PlantGuideQuit_Noti")
|
|
class PlanGuideVC: BaseVC {
|
|
@IBOutlet weak var view_gradient: UIView!
|
@IBOutlet weak var btn_back: UIButton!
|
@IBOutlet weak var label_title: UILabel!
|
@IBOutlet weak var label_subTitle: UILabel!
|
@IBOutlet weak var label_info: UILabel!
|
@IBOutlet weak var btn_custom: UIButton!
|
|
private var isFromFist = false
|
|
private lazy var player:AVPlayer = {
|
let bgPath = Bundle.main.url(forResource: "bg_movie", withExtension: "mov")
|
let p = AVPlayer(url: bgPath!)
|
p.isMuted = true
|
return p
|
}()
|
|
private lazy var bgplayer:AVPlayer = {
|
let p = AVPlayer()
|
return p
|
}()
|
|
private lazy var playerLayer:AVPlayerLayer = {
|
let pLayer = AVPlayerLayer()
|
pLayer.videoGravity = .resizeAspectFill
|
return pLayer
|
}()
|
|
override func viewDidAppear(_ animated: Bool) {
|
super.viewDidAppear(animated)
|
self.navigationController?.interactivePopGestureRecognizer?.isEnabled = false
|
}
|
|
init(isFromFist:Bool){
|
super.init(nibName: nil, bundle: nil)
|
self.isFromFist = isFromFist
|
}
|
|
required init?(coder: NSCoder) {
|
fatalError("init(coder:) has not been implemented")
|
}
|
|
|
override func viewDidLoad() {
|
super.viewDidLoad()
|
|
Services.getPlan().subscribe(onNext: {[weak self]data in
|
if let url = data.data{
|
self?.bgplayer.replaceCurrentItem(with: AVPlayerItem(url: URL(string: url.jq_urlEncoded())!))
|
self?.bgplayer.play()
|
|
|
PayMusicVC.updateStatus(.pause)
|
AudioPlayer.getSharedInstance().bgmPlayer?.pause()
|
AudioPlayer.getSharedInstance().masterPlayer?.pause()
|
AudioPlayer.getSharedInstance().scenePlayer?.pause()
|
|
}
|
}).disposed(by: disposeBag)
|
}
|
|
override func viewWillAppear(_ animated: Bool) {
|
super.viewWillAppear(animated)
|
if player.actionAtItemEnd == .pause{
|
player.play()
|
}
|
}
|
|
override func viewDidDisappear(_ animated: Bool) {
|
super.viewDidDisappear(animated)
|
player.pause()
|
|
if AudioPlayer.getSharedInstance().meditationModel != nil{
|
AudioPlayer.getSharedInstance().bgmPlayer?.play()
|
AudioPlayer.getSharedInstance().masterPlayer?.play()
|
PayMusicVC.updateStatus(.playing)
|
}else if UserDefaultSettingViewModel.getSetting()?.bgm != nil && !(JQ_currentNavigationController().viewControllers.first is PlanGuideVC){
|
AudioPlayer.getSharedInstance().playSceneAt(UserDefaultSettingViewModel.getSetting()!.bgm!.audioFile)
|
}
|
}
|
|
override func setUI() {
|
|
label_title.font = Def_FlyFlowerSong(fontSize: 35)
|
label_title.textColor = .white
|
|
label_subTitle.attributedText = AttributedStringbuilder.build().add(string: "亲爱的家人,温暖喜悦问候您\n我是心泉老师\n欢迎来到泉疗愈空间\n愿这一方空间为您带来\n放松 平和 宁静 与喜悦", withFont: Def_SourceHanSerif_Regular(fontSize: 17), withColor: .white,lineSpace: 10).mutableAttributedString
|
label_subTitle.textAlignment = .center
|
|
|
label_info.font = Def_FlyFlowerSong(fontSize: 17)
|
label_info.textColor = .white
|
|
btn_custom.jq_borderColor = .white
|
btn_custom.backgroundColor = .white.withAlphaComponent(0.3)
|
btn_custom.jq_borderWidth = 1
|
btn_custom.titleLabel?.font = Def_SourceHanSerif_Semibold(fontSize: 20)
|
|
|
playerLayer.player = player
|
view.layer.addSublayer(playerLayer)
|
playerLayer.zPosition = -999
|
}
|
|
override func viewDidLayoutSubviews() {
|
super.viewDidLayoutSubviews()
|
playerLayer.frame = view.frame
|
|
view_gradient.jq_gradientColor(colorArr: [UIColor.black.withAlphaComponent(0.25).cgColor,UIColor.clear.cgColor],startPoint: CGPoint(x: 0, y: 1),endPoint: CGPoint(x: 0, y: 0))
|
}
|
|
override func setRx() {
|
NotificationCenter.default.addObserver(forName: .AVPlayerItemDidPlayToEndTime, object: nil, queue: nil) { [weak self] data in
|
|
let notifiUrl = ((data.object as? AVPlayerItem)?.asset as? AVURLAsset)
|
let bgItem = (self?.bgplayer.currentItem?.asset as? AVURLAsset)
|
let videoItem = (self?.player.currentItem?.asset as? AVURLAsset)
|
|
if bgItem?.url == notifiUrl?.url{
|
self?.bgplayer.seek(to: CMTime.zero)
|
self?.bgplayer.play()
|
}
|
|
if videoItem?.url == notifiUrl?.url{
|
self?.player.seek(to: CMTime.zero)
|
self?.player.play()
|
}
|
}
|
|
NotificationCenter.default.rx.notification(PlantGuideQuit_Noti).take(until: self.rx.deallocated).subscribe(onNext: {[weak self]data in
|
if data.object as? Bool == true{
|
|
}
|
self?.dismiss(animated: true)
|
}).disposed(by: disposeBag)
|
}
|
|
override var preferredStatusBarStyle: UIStatusBarStyle{
|
return .lightContent
|
}
|
|
@IBAction func backAction(_ sender: UIButton) {
|
self.dismiss(animated: true)
|
|
if var m = UserDefaultSettingViewModel.getSetting(){
|
m.userFirstLaunch = false
|
UserDefaultSettingViewModel.saveSetting(m)
|
}
|
}
|
|
@IBAction func customAction(_ sender: UIButton) {
|
PlanGuidePromptView.show {[weak self] type in
|
switch type {
|
case .seeOther:
|
let vc = PlanGuide_1_VC()
|
self?.jq_push(vc: vc)
|
case .toSeting:
|
let vc = BackgroundVoiceVC(isFromFist: self?.isFromFist ?? false)
|
vc.hidesBottomBarWhenPushed = true
|
JQ_currentNavigationController().pushViewController(vc)
|
}
|
}
|
}
|
|
deinit{
|
|
}
|
}
|
|
extension PlanGuideVC:PayMusicDelegate{
|
func playState(_ state: PlayMusicState) {
|
|
}
|
|
}
|