2016-10-15 3 views
1

私は非常に単純なAVPlayerをmacOSアプリケーション内に作成しました。AVPlayerは自動再生しますが、すべきではありません(スウィフト)

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 

    } 

} 

基本的にはうまく動作しますが、プレイヤーは起動時に自動的に再生されます。 viewDidLoadの末尾にplayerView.player?.pause()を追加しても、自動的に再生されます。

私は間違っていますか?

答えて

1

あなたは、少なくともViewWillAppear()機能であなたのAVPlayerを入れなければならない、とplayerView.playerを一時停止することはあなたの全体のビューを一時停止します - 代わりにvideoPlayerを一時停止:

videoPlayer.pause() 

は後playerView.player = videoPlayerが動作する必要があることを追加します。あなたのコードは次のようになります:

override func viewWillAppear() { 
    super.viewWillAppear() 

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

ありがとうございました!コードは 'viewWillAppear'で正常に動作し、' .pause() '行がなくても、ビデオは現在自動再生されません。なぜそれが違いになるのか説明してください。 – ixany

+1

'ViewDIdLoad'は、ビューがロードされたかどうかをロードしますが、' ViewWillAppear'はビューが画面に完全に遷移したときに呼び出されます。つまり、隠されていない、隠された祖先がなく、それが順序付けられている - デフォルトの動作は何もしないことです。 –

関連する問題