2016-06-17 18 views
0

これは私の最初の投稿であり、私についての言葉はほとんどありません。通常、私はものをデザインしていますが(UIは主に)、私は本当にあなたをより良く理解するためのプログラミングに飛躍したいと思っていました。だから私は行くために小さなアプリを作ることにしました。AVPlayer Swift:コントロールを非表示にし、ランドスケープビューを無効にするにはどうすればよいですか?

私は数時間これを理解しようとしていました。これはこれまでの私の最初のアプリプロジェクトであり、私の新しさを謝ります。

私がしたいのは、AVPlayerのコントロールを非表示にして横長表示を無効にすることですが、どこに配置するのかわかりません。showsPlaybackControls = false

import UIKit 
import AVKit 
import AVFoundation 


class ViewController: UIViewController { 


    private var firstAppear = true 

    override func viewDidAppear(animated: Bool) { 
     super.viewDidAppear(animated) 
     if firstAppear { 
      do { 
       try playVideo() 
       firstAppear = false 
      } catch AppError.InvalidResource(let name, let type) { 
       debugPrint("Could not find resource \(name).\(type)") 
      } catch { 
       debugPrint("Generic error") 
      } 

     } 
    } 

    private func playVideo() throws { 
     guard let path = NSBundle.mainBundle().pathForResource("video", ofType:"mp4") else { 
      throw AppError.InvalidResource("video", "m4v") 
     } 
     let player = AVPlayer(URL: NSURL(fileURLWithPath: path)) 
     let playerController = AVPlayerViewController() 
     playerController.player = player 
     self.presentViewController(playerController, animated: false) { 
      player.play() 
     } 
    } 
} 

enum AppError : ErrorType { 
    case InvalidResource(String, String) 
} 

答えて

5

showsPlaybackControlsあなたはそれを作成した後、あなたがそれを設定することができますので、AVPlayerViewControllerの財産である:

playerController.showsPlaybackControls = false 

あなただけの風景を許可したい場合、あなたは、AVPlayerViewControllerをサブクラスsupportedInterfaceOrientationsを無効にして唯一の景観を返すことができますそのクラスをAVPlayerViewControllerの代わりに使用します。

UPDATEあなたが言う警告見つけるAVPlayerViewControllerのドキュメントに行けば、コメントで述べたように

がAVPlayerViewControllerをサブクラス化しないでくださいを。このクラスのメソッドをオーバーライドするとサポートされず、未定義の動作になります。

彼らはおそらくあなたが行動を妨げる可能性の再生に関連したメソッドをオーバーライドしたくない、と私はのみsupportedInterfaceOrientationsをオーバーライドすることは安全であると言うでしょう。あなたは別の解決策をしたい場合は

は、あなただけの風景を返すようにsupportedInterfaceOrientationsをオーバーライドする独自のビューコントローラクラスを作成し、そのビューコントローラ内AVPlayerViewControllerを配置することができます。

+0

ありがとうEmilio! –

+0

これはうまくいくかもしれませんが、AVPlayerViewControllerをサブクラス化することは推奨されていないかサポートされていません。Appleのdocs:https://developer.apple.com/documentation/avkit/avplayerviewcontroller – taykay08

+1

@ taykay08代わりの解決策で私の答えを更新しました。 – EmilioPelaez

関連する問題