2016-10-15 1 views
1

Ich habe einen sehr einfachen AVPlayer innerhalb einer Mac OS App erstellt.AVPlayer Autoplay aber sollte nicht (Swift)

import Cocoa 
import AVKit 
import AVFoundation 

class ViewController: NSViewController { 

@IBOutlet var playerView: AVPlayerView! 

override func viewDidLoad() { 

    super.viewDidLoad() 

    let videoPath = URL(fileURLWithPath: "myPath/myFile.mp4") 
    let videoPlayer = AVPlayer(url: videoPath) 
    playerView.player = videoPlayer 

    } 

} 

Es funktioniert grundsätzlich gut, aber der Player spielt automatisch beim Start, was es nicht sollte. Selbst wenn ich playerView.player?.pause() am Ende von viewDidLoad hinzufüge, wird es autoplays.

Was mache ich falsch?

Antwort

1

Sie sollten mindestens legen Sie Ihre AVPlayer in der ViewWillAppear() Funktion und playerView.player pausieren würde Ihre gesamte Ansicht pausieren - stattdessen Pause videoPlayer:

videoPlayer.pause() 

Hinzufügen, dass nach playerView.player = videoPlayer sollte funktionieren; Ihr Code wäre dann:

override func viewWillAppear() { 
    super.viewWillAppear() 

    let videoPath = URL(fileURLWithPath: "myPath/myFile.mp4") 
    let videoPlayer = AVPlayer(url: videoPath) 
    playerView.player = videoPlayer 
    videoPlayer.pause() 
} 
+0

Vielen Dank! Code funktioniert gut in 'viewWillAppear', und auch ohne die' .pause() 'Zeile wird das Video jetzt nicht automatisch geladen. Könnten Sie bitte erklären, warum das den Unterschied macht? – ixany

+1

'ViewDIdLoad' lädt, ob die Ansicht geladen wurde oder nicht,' ViewWillAppear' wird aufgerufen, wenn die Ansicht vollständig auf den Bildschirm übergegangen ist, dh sie ist nicht "versteckt", hat keinen versteckten Vorfahren und befindet sich in einem Fenster das ist in Ordnung - das Standardverhalten ist nichts zu tun. –