2016-04-04 15 views
0

Oyunumun sonunda kısa bir video oynatmam gerekiyor.AVPlayerViewController ile Video için set boyutu

Önceki Görünüm Denetleyicisinden bir segue kullanarak bir sunum yaparak hikaye panelimde bir AVPlayerViewController oluşturdum. Ancak videonun tüm ekranı KAPATMAMASI GEREKİR. Ekran boyutunun% 50'sini (ortalanmış) diyelim.

import AVKit 
import AVFoundation 
import UIKit 

class VideoPlayerViewController: AVPlayerViewController { 

override func viewDidLoad() { 
    super.viewDidLoad() 
} 

override func viewDidAppear(animated: Bool) { 
    // Play video 
    player?.play() 
} 

override func viewDidLayoutSubviews() { 
    print(videoBounds) 
    self.view.bounds = videoBounds 
} 

}

sorun tüm ekranı video ölçekleri (yaklaşık 100 * 70 piksel bir şey gibi) çok küçük olmasıdır: Burada

Denedim kodudur. Varsayılan boyutun bir noktada 100 * 100 olduğuna ve video oranımla eşleşmesi gerektiğine inanıyorum.

Sınırları belirtmezsem, tüm ekrana ölçekler (video çekim seçeneği bana izin vermiyor).

GörünümDidLayoutSubviews'taki tüm görünümümdeki boyutu küçültürsem, bu yöntem pek çok kez çağrıldığı için hala sorun değil, bu yüzden görünüm sınırlarımı değiştirmeye devam ediyorum.

Ben AVPlayerViewController ile ekranın bir parçası üzerinde yerel videoyu görüntülemek için ne kadar zor inanamıyorum

...

Herhangi bir yardım?

cevap

-2

AVPlayerViewController yalnızca tam ekran olarak kullanılmak üzere tasarlanmıştır, AVPlayerLayer'u kullanmanız daha iyidir, bu sizin seçtiğiniz bir görünüme sığdırmanıza/yerleştirmenize olanak tanır.

let player = AVPlayer(url: myURL) 
let layer = AVPlayerLayer(player: player) 
layer.frame.size = CGSize(100,100) 
layer.frame.origin = myView.center 

player.play() 
+0

Herhangi bir Apple belgesi görmedim, bu durumun var olduğunu aklınızda bulundurun - eğer varsa, belgelere bir bağlantı ekleyin. – Rupert

0

Görünüm denetleyicisini istediğiniz boyuta getirebilirsiniz.

let videoURL = URL(fileURLWithPath: videoPath) 
let player = AVPlayer(url: videoURL) 
let playerViewController = AVPlayerViewController() 
playerViewController.view.frame = CGRect (x:100, y:100, width:200, height:100) 
playerViewController.player = player 

self.addChildViewController(playerViewController) 
self.view.addSubview(playerViewController.view) 
playerViewController.didMove(toParentViewController: self) 

(besbelli, yukarıdaki boyutu garip olurdu, ama sen istiyorsan eğer.): Bunun gibi, eğer istedi.

Oynatıcı kontrollerinin otomatik olarak yönetilmesini istiyorsanız ViewController'ı kullanın. Kendi kontrollerinizi yuvarlamak istiyorsanız, katman muhtemelen daha iyidir.

Sadece VC'yi tam ekran dışında kullanmamanız gerektiğini belirttiğiniz yanıtı düzeltmek için bunu gönderin. Benim için iyi çalışıyor gibi görünüyor.