簡體   English   中英

無法將按鈕綁定到 AVPlayer

[英]Can't bind button to AVPlayer

我正在嘗試在 swift 中進行詳細查看,但我無法找到使用自定義按鈕暫停視頻的方法。 而且當我 go 回到我的列表時,我仍然可以聽到在后台播放的視頻。 這是我的 AVPlayer 和按鈕的代碼。

 import SwiftUI
 import AVKit

 struct Workdetail: View {



var work: WorkoutDe



   @State var player = AVPlayer()
   @State var isplaying = true




var body: some View {
    
    
    VStack {
    ZStack {
      
        VideoPlayer(player: $player, work: work)
                .frame(height: UIScreen.main.bounds.height / 3.5)
     
        Butto(player: $player, isplaying: $isplaying)
        
    }
    Spacer()
    }
                   }


        
    

 }
         struct Butto : View {
                
              @Binding var player : AVPlayer
              @Binding var isplaying : Bool
               
                
                
                var body : some View{
                
                
                    Button(action: {
                        
                        if self.isplaying{
                            
                            self.player.pause()
                            self.isplaying = false
                        }
                        else{
                            
                            self.player.play()
                            self.isplaying = true
                        }
                        
                    }) {
                        
                        Image(systemName: self.isplaying ? "pause.fill" : "play.fill")
                            .font(.title)
                            .foregroundColor(.white)
                            .padding(20)
                    }
                    
                }       
                
    }



 

    struct VideoPlayer : UIViewControllerRepresentable {
            
        
        var work : WorkoutDe
        
        @Binding var player : AVPlayer
    
                var playerLayer = AVPlayerLayer()
        
         public func makeUIViewController(context: Context) -> AVPlayerViewController {
        
    
               let player = AVPlayer(url: URL(fileURLWithPath: String(work.url)))
            let controller = AVPlayerViewController()
            controller.player = player
            controller.videoGravity = .resizeAspectFill

            player.actionAtItemEnd = .none
            NotificationCenter.default.addObserver(forName: .AVPlayerItemDidPlayToEndTime, object: player.currentItem, queue: .main) { _ in
                player.seek(to: CMTime.zero)
              player.play()
              
            }
        
            
            
            player.play()
  
            
            return controller
            
        }
    
        
        func rewindVideo(notification: Notification) {
             playerLayer.player?.seek(to: .zero)
         }
    
    public func updateUIViewController(_ uiViewController: AVPlayerViewController, context: UIViewControllerRepresentableContext<VideoPlayer>) {
          
          
      }
}

AVPlayer可以工作,但是當我按下按鈕時沒有任何反應。 按鈕的圖像發生變化,但視頻不會停止播放。 有人可以向我解釋如何綁定按鈕,因為我無法弄清楚

這是問題的代碼,如果你們正在尋找它。 有人在另一個帖子中回答:

 public func makeUIViewController(context: Context) -> AVPlayerViewController {

let player = AVPlayer(url: URL(fileURLWithPath: String(work.url)))
let controller = AVPlayerViewController()

DispatchQueue.main.async {
   self.player = player
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM