大佬教程收集整理的这篇文章主要介绍了ios – 在滚动CollectionView期间不必要地打开YouTube播放器,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
import UIKit class PlayerView: UIView,YouTubePlayerDelegate { override init(frame: CGRect) { super.init(frame: framE) addYotubePlayer() } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } // youtube player lazy var youtubePlayer: YouTubePlayerView = { let viewFrame = UIScreen.main.bounds let player = YouTubePlayerView(frame: CGRect(x: 0,y: 0,width: viewFrame.width - 16,height: viewFrame.height * 1/3)) player.delegate = self return player }() // used as an overlay to dismiss the youtube player let blackView = UIView() // youtube player loader lazy var playerInDicator: UIActivityInDicatorView = { let inDicator = UIActivityInDicatorView() inDicator.activityInDicatorViewStyle = .whiteLarge inDicator.hidesWhenStopped = true return inDicator }() // shows youtube player func addYotubePlayer() { if let window = UIApplication.shared.keyWindow { blackView.frame = window.frame self.addSubview(blackView) blackView.BACkgroundColor = UIColor(white: 0,alpha: 0.5) let tap = UITapGestureRecognizer(target: self,action: #SELEctor(handleDismiss)) tap.numberOfTapsrequired = 1 tap.cancelsTouchesInView = false blackView.addGestureRecognizer(tap) let centerX = UIScreen.main.bounds.size.width / 2 let centerY = UIScreen.main.bounds.size.height / 2 blackView.addSubview(playerInDicator) playerInDicator.center = CGPoint(x: centerX,y: centerY) playerInDicator.startAnimaTing() blackView.addSubview(youtubePlayer) youtubePlayer.center = CGPoint(x: centerX,y: centerY) blackView.alpha = 0 youtubePlayer.alpha = 0 UIView.animate(withDuration: 0.5,delay: 0,usingSpringWithDamping: 1,initialSpringVeLocity: 1,options: .curveEaSEOut,animations: { self.blackView.alpha = 1 self.youtubePlayer.alpha = 1 },completion: nil) } } func play(_ videoID: String) { youtubePlayer.loadVideoID(videoID) } @objc func handleDismiss() { blackView.removeFromSuperview() UIApplication.shared.keyWindow?.viewWithTag(24)?.removeFromSuperview() UIApplication.shared.keyWindow?.removeFromSuperview() } func playerReady(_ videoPlayer: YouTubePlayerView) { self.playerInDicator.stopAnimaTing() } func playerStateChanged(_ videoPlayer: YouTubePlayerView,playerState: YouTubePlayerStatE) { } func playerQualityChanged(_ videoPlayer: YouTubePlayerView,playBACkQuality: YouTubePlayBACkQuality) { } }
YouTubePlayerCell(我在collectionView中显示的母鸡服务器响应视频):
import UIKit class YouTubePlayerCell: ChatmessageCell { var player: PlayerView = PlayerView(frame: UIScreen.main.bounds) override func setupViews() { super.setupViews() setupCell() } func setupCell() { messageTextView.frame = CGRect.zero textBubbleView.frame = CGRect.zero } func loadVideo(with videoID: String) { player.tag = 24 UIApplication.shared.keyWindow?.addSubview(player) player.play(videoID) } override func prepareForReuse() { super.prepareForReuse() player.removeFromSuperview() UIApplication.shared.keyWindow?.viewWithTag(24)?.removeFromSuperview() } }
以下是我在UICollectionView的cellForItemAt方法中呈现YouTubePlayerCell的方法
let message = messages[indexPath.row] if message.actionType == ActionType.video_play.rawValue { if let cell = collectionView.dequeueReusableCell(withReusEIDentifier: ControllerConstants.youtubePlayerCell,for: indexPath) as? YouTubePlayerCell { self.resignResponders() if let videoId = message.videoData?.identifier { cell.loadVideo(with: videoId) } return cell } }
完整的源代码可以在这里找到:https://github.com/imjog/susi_iOS/tree/ytplayer
以上是大佬教程为你收集整理的ios – 在滚动CollectionView期间不必要地打开YouTube播放器全部内容,希望文章能够帮你解决ios – 在滚动CollectionView期间不必要地打开YouTube播放器所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。