fix
杨锴
2025-02-18 c5e51c0ec3cbf1016f3bfbd58b0f0a004aaa9900
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