我使用player-swift
(即:https://github.com/piemonte/Player)在我的應用程序中顯示視頻內容。我創建了一個UIViewController
,並在那裏添加了一個view
並將其分配給它,稱爲PlayerView
。到現在爲止還挺好。爲什麼我的約束在swift/storyboard中無法正常工作?
在我的代碼開始,如下所示:現在
self.videoPlayer = Player()
self.videoPlayer.delegate = self
self.videoPlayer.view.frame = myVideo.bounds
self.addChildViewController(self.videoPlayer)
myVideo.addSubview(self.videoPlayer.view)
self.videoPlayer.didMoveToParentViewController(self)
let tapGestureRecognizer: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(handleTapGestureRecognizer(_:)))
tapGestureRecognizer.numberOfTapsRequired = 1
self.videoPlayer.view.addGestureRecognizer(tapGestureRecognizer)
self.videoPlayer.fillMode = "AVLayerVideoGravityResizeAspectFill"
self.videoPlayer.setUrl(url)
self.videoPlayer.playFromBeginning()
self.videoPlayer.playbackLoops = true
,因爲我打的視頻格式480×640(肖像模式),我認爲有關分配以下限制:
而現在,當我打開它在iPhone 6S再加上,我看到:
如此 - 因爲我把尾隨的空間爲0 - 爲什麼還是有這個白色條紋在屏幕的右側?
在另一方面,適用於iPhone 4s,視頻裁剪:
,並在iPhone 6是罰款:
什麼樣的約束我應該應用,以便它在每臺設備上都與iPhone 6上相同?我只是希望它被水平拉伸,然後垂直長度應該自動調整(使長寬比保持在480x640)
=================== ===========================
夥計們,正如我在下面的評論部分寫的 - 當我刪除播放器並保持正常用相同的約束來觀察 - 一切都有效,所以它必定是一個球員本身的錯誤......你能幫我區分哪裏可能是錯的嗎?
==============================================
在我的Storyboard
中,我將顏色playerView
設置爲淺灰色。我再次運行模擬器,我看到:
這意味着有存儲播放器視圖自身的一些其他層。我通過插件的代碼去,發現這個:
public override func loadView() {
self.playerView = PlayerView(frame: CGRectZero)
self.playerView.fillMode = AVLayerVideoGravityResizeAspect
self.playerView.playerLayer.hidden = true
self.view = self.playerView
}
這裏https://github.com/piemonte/Player/blob/master/Sources/Player.swift
,所以我想我需要建立某種程度上的制約:self.playerView.playerView
。但我該怎麼做呢?
你在哪裏調用你的代碼? viewDidLoad中? – BJHStudios
是的,視圖確實加載了,我想也許我應該以某種方式設置來自代碼而不是故事板的約束,但仍然...如果我將其設置在故事板本身上,它應該沒問題(在我看來)。 。 – randomuser1
該視圖尚未在viewDidLoad中設置其大小。嘗試調用從viewDidAppear,看看它是否表現不同 – BJHStudios