| | |
| | | import UIKit |
| | | import JQTools |
| | | import RxSwift |
| | | import AVFoundation |
| | | |
| | | enum ImageFromType { |
| | | case local |
| | |
| | | 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 |
| | |
| | | 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 |