Я пытаюсь отобразить простой мов ie в виде. Я хочу, чтобы mov ie расширился, чтобы заполнить ширину вида, и обрезать нижнюю часть (если необходимо), но не верхнюю. Я пробовал несколько различных комбинаций videoGravity
и contentMode
, но, похоже, ни одна из них не делает то, что я хочу.
Вот мое мнение:
class
AutoPlayerView : UIView
{
func
updateLayer()
{
// let ar = self.playerLayer.videoRect.width / self.playerLayer.videoRect.height
// r.origin.y = 0.0
// self.playerLayer.videoRect = r
self.playerLayer.bounds = self.bounds
let r = self.playerLayer.videoRect
}
var
player: AVPlayer?
{
get { return self.playerLayer.player }
set { self.playerLayer.player = newValue }
}
var
playerLayer: AVPlayerLayer
{
return self.layer as! AVPlayerLayer
}
override
static
var
layerClass: AnyClass
{
return AVPlayerLayer.self
}
var
url: URL?
{
didSet(inOldVal)
{
if inOldVal != self.url
{
if let url = self.url
{
self.player = AVPlayer(url: url)
self.player?.play()
self.playerLayer.videoGravity = .resizeAspectFill
self.obs = NotificationCenter.default.addObserver(forName: .AVPlayerItemDidPlayToEndTime, object: self.player?.currentItem, queue: .main)
{ (inNotification) in
self.player?.seek(to: .zero)
self.player?.play()
}
}
else
{
if let obs = self.obs { NotificationCenter.default.removeObserver(obs) }
self.player = nil
}
// updateLayer()
}
}
}
var obs: Any?
}