【发布时间】:2017-01-30 07:52:51
【问题描述】:
我正在使用player-swift(那个:https://github.com/piemonte/Player)在我的应用中显示视频内容。我创建了一个UIViewController,在那里添加了一个view 并为其分配了一个名为PlayerView 的类。到目前为止一切顺利。
在我的代码中,我按如下方式启动它:
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
现在,由于我正在播放的视频格式为 480x640(纵向模式),我考虑分配以下约束:
现在,当我在 iphone 6s plus 上打开它时,我看到了:
所以 - 既然我把尾随空格设置为 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?
-
是的,视图确实加载了,我想也许我应该以某种方式从代码而不是故事板设置约束,但仍然......如果我设置它应该没问题(在我看来)在故事板本身上......
-
视图尚未在 viewDidLoad 中设置其大小。尝试从 viewDidAppear 调用它,看看它的行为是否不同
-
@BJHStudios 嗯,我将播放器的代码移动到 viewDidAppear,但现在我看不到播放器本身,只有白色面板...似乎一次没有加载:|
-
我认为,或者更确切地说,我确信,这是这个插件的错误 - 当我从视图中删除播放器并添加了一个普通的
view时(具有相同的约束) - 现在一切正常。 .. 所以现在我只需要一些帮助来区分这个播放器出了什么问题以及如何修复它:)
标签: ios swift storyboard constraints nslayoutconstraint