From c5e51c0ec3cbf1016f3bfbd58b0f0a004aaa9900 Mon Sep 17 00:00:00 2001 From: 杨锴 <841720330@qq.com> Date: 星期二, 18 二月 2025 17:58:45 +0800 Subject: [PATCH] fix --- XQMuse/Root/Home/View/HomeTopMenuView.swift | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 57 insertions(+), 2 deletions(-) diff --git a/XQMuse/Root/Home/View/HomeTopMenuView.swift b/XQMuse/Root/Home/View/HomeTopMenuView.swift index ebe9fbd..d813fe2 100644 --- a/XQMuse/Root/Home/View/HomeTopMenuView.swift +++ b/XQMuse/Root/Home/View/HomeTopMenuView.swift @@ -8,6 +8,7 @@ import UIKit import JQTools import RxSwift +import AVFoundation enum ImageFromType { case local @@ -31,9 +32,12 @@ private var defaultItems = [HomeTopMenuItem]() private var clouse:((HomeTopMenuItem)->Void)? + private var aVPlayerLayer:AVPlayerLayer? + override func awakeFromNib() { super.awakeFromNib() + image_top.layer.masksToBounds = true image_top.image = UIImage(named: "home_top_bg") menu_height.constant = 119 menu_collectionView.delegate = self @@ -46,14 +50,65 @@ defaultItems.append(HomeTopMenuItem(title: "清业疗愈", image: "icon_quiet", imageFrom: .local)) defaultItems.append(HomeTopMenuItem(title: "亲子疗愈", image: "icon_parent-child", imageFrom: .local)) menu_collectionView.reloadData() + + NotificationCenter.default.addObserver(forName: .AVPlayerItemDidPlayToEndTime, object: nil, queue: nil) { [weak self] data in + self?.aVPlayerLayer?.player?.seek(to: .zero) + self?.aVPlayerLayer?.player?.play() + } + + if let url = Bundle.main.url(forResource: "bg_water", withExtension: "mov"){ + setPlayer(url: url) + } + } func resetTopImage(){ - if let imgUrl = UserDefaultSettingViewModel.getSetting()?.sceneMusicModel?.imageUrl.jq_urlEncoded(){ + var needLocalVideo = false + if let imgUrl = UserDefaultSettingViewModel.getSetting()?.sceneMusicModel?.imageUrl.jq_urlEncoded(),imgUrl.isEmpty == false{ image_top.sd_setImage(with: URL(string: imgUrl)) - } + }else{ + image_top.image = UIImage(named: "home_top_bg") + needLocalVideo = true + } + + if let model = UserDefaultSettingViewModel.getSetting()?.sceneMusicModel{ + + aVPlayerLayer?.player?.pause() + aVPlayerLayer?.removeFromSuperlayer() + aVPlayerLayer = nil + + if model.backName?.isEmpty ?? true && model.imageUrl.isEmpty == false{ + image_top.sd_setImage(with: URL(string: model.imageUrl.jq_urlEncoded())) + } + + if let videoUrl = model.backUrl,videoUrl.isEmpty == false{ + setPlayer(url: URL(string: videoUrl)!) + return + } + + if needLocalVideo{ + if let url = Bundle.main.url(forResource: "bg_water", withExtension: "mov"){ + setPlayer(url: url) + } + } + } } + private func setPlayer(url:URL){ + + let player = AVPlayer(url: url) + player.play() + player.isMuted = true + + if aVPlayerLayer == nil{ + aVPlayerLayer = AVPlayerLayer() + aVPlayerLayer = AVPlayerLayer(player: player) + aVPlayerLayer?.frame = image_top.frame + aVPlayerLayer?.videoGravity = .resizeAspectFill + self.layer.addSublayer(aVPlayerLayer!) + } + } + func resetItems(_ items:[HomeTopMenuItem]){ defaultItems.removeAll() defaultItems = items -- Gitblit v1.7.1