//
|
// 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 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 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)!))
|
self?.bgplayer.play()
|
}
|
}).disposed(by: disposeBag)
|
|
self.bgplayer.addPeriodicTimeObserver(forInterval: CMTimeMake(value: 1, timescale: 1), queue: DispatchQueue.main) {[weak self] time in
|
guard let weakSelf = self else { return }
|
|
//当前正在播放的时间
|
let loadTime = CMTimeGetSeconds(time)
|
//视频总时间
|
let totalTime = CMTimeGetSeconds((weakSelf.bgplayer.currentItem?.duration)!)
|
|
if loadTime >= totalTime{
|
weakSelf.bgplayer.seek(to: CMTime.zero)
|
weakSelf.bgplayer.play()
|
}
|
}
|
}
|
|
override func viewWillAppear(_ animated: Bool) {
|
super.viewWillAppear(animated)
|
if player.actionAtItemEnd == .pause{
|
player.play()
|
}
|
}
|
|
override func viewDidDisappear(_ animated: Bool) {
|
super.viewDidDisappear(animated)
|
player.pause()
|
}
|
|
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] _ in
|
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)
|
}
|
|
@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:
|
// self?.dismiss(animated: true) {
|
let vc = BackgroundVoiceVC()
|
vc.hidesBottomBarWhenPushed = true
|
JQ_currentNavigationController().pushViewController(vc)
|
// }
|
}
|
}
|
}
|
|
deinit{
|
|
}
|
}
|
|
extension PlanGuideVC:PayMusicDelegate{
|
func playState(_ state: PlayMusicState) {
|
|
}
|
|
}
|