Ios 为什么我的约束在swift/storyboard中不能正常工作?

Ios 为什么我的约束在swift/storyboard中不能正常工作?,ios,swift,storyboard,constraints,nslayoutconstraint,Ios,Swift,Storyboard,Constraints,Nslayoutconstraint,我正在使用播放器swift(那个:)在我的应用程序中显示视频内容。我创建了一个UIViewController,在那里添加了一个视图,并为它分配了一个名为PlayerView的类。到目前为止还不错 在我的代码中,我启动了它,如下所示: self.videoPlayer = Player() self.videoPlayer.delegate = self self.videoPlayer.view.frame = myVideo.bounds self.addChildViewControll

我正在使用
播放器swift
(那个:)在我的应用程序中显示视频内容。我创建了一个
UIViewController
,在那里添加了一个
视图
,并为它分配了一个名为
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上,视频被裁剪:

在iphone6上也可以:

我应该应用什么样的约束,使它在每台设备上的外观都与iphone 6相同?我只想让它水平拉伸,然后垂直长度应该自动调整到它(以便保持长宽比480x640)

==============================================

伙计们,正如我在下面的评论部分中所写的——当我移除玩家并使用相同的约束条件离开正常视图时——一切正常,所以这一定是玩家本身的错误。。。你能帮我辨别出哪里可能出了问题吗

==============================================

在我的
故事板中
我将
playerView
的颜色设置为浅灰色。我再次运行模拟器,看到:

这意味着还有其他层存储播放器视图本身。我浏览了插件的代码,发现:

public override func loadView() {
    self.playerView = PlayerView(frame: CGRectZero)
    self.playerView.fillMode = AVLayerVideoGravityResizeAspect
    self.playerView.playerLayer.hidden = true
    self.view = self.playerView
}
这里



所以我假设我需要以某种方式设置约束:
self.playerView.playerView
。但是我该怎么做呢

侧边距的约束必须为-20,这样视频才能全屏显示,0留下额外的空间,如果将视图拖动到边距的边缘,可以看到这一点,我建议按住ctrl键拖动到主视图,并将其与superview等宽

侧边距的约束必须为-20,这样视频才能全屏显示,0会留下额外的空间,如果将视图拖动到边距的边缘,您可以看到这一点,我建议您按住ctrl键并拖动到主视图,然后将其与superview等宽

您在哪里调用代码?viewDidLoad?是的,view确实加载了,我想也许我应该以某种方式设置代码中的约束,而不是故事板,但仍然。。。(在我看来)如果我在故事板上设置它就可以了……视图还没有在viewDidLoad中设置它们的大小。试着从ViewDidDisplay调用它,看看它是否正常工作differently@BJHStudios嗯,我把播放器的代码移到了viewdide,但是现在我看不到播放器本身,只有白色面板。。。似乎它一次都没有加载:|我想,或者更确切地说,我确信,这是插件的错误-当我从视图中删除播放器并添加一个正常的
视图时(具有相同的约束)-现在一切都正常了。。。所以现在我只需要一些帮助来区分这个播放器的错误以及如何修复:)你在哪里调用你的代码?viewDidLoad?是的,view确实加载了,我想也许我应该以某种方式设置代码中的约束,而不是故事板,但仍然。。。(在我看来)如果我在故事板上设置它就可以了……视图还没有在viewDidLoad中设置它们的大小。试着从ViewDidDisplay调用它,看看它是否正常工作differently@BJHStudios嗯,我把播放器的代码移到了viewdide,但是现在我看不到播放器本身,只有白色面板。。。似乎它一次都没有加载:|我想,或者更确切地说,我确信,这是插件的错误-当我从视图中删除播放器并添加一个正常的
视图时(具有相同的约束)-现在一切都正常了。。。所以现在我只需要一些帮助来区分这个播放器的错误以及如何修复:)@LuizPerez我刚刚在我的主要问题中添加了更多的信息,你能看看它,告诉我它是否正确,我应该如何继续吗?好的,让我直说,您正在将播放器视图添加到主视图,对吗?您可以从故事板设置宽度,只需按住ctrl键并从播放器视图拖动到主视图,然后选择“等宽”,现在如果播放器位于子视图中,而播放器本身是另一个视图,则表示您有3个层,对吗?(mainView、childView和playerView),告诉我这是否正确这就是它的样子:看起来我有两层,我不知道如何到达第三层(播放器本身存储的确切位置)…我想要设置约束的层设置在这里(或者至少我希望是这样):
myVideo.addSubview(self.videoPlayer.view)
既然我无法从故事板访问该视图,那么我如何从代码中设置该视图的约束?好的,我想我得到了,在视图控制器上添加另一个视图,设置视频大小的约束(可以设置相等的宽度、垂直间距和高度),将其命名为videoContainerView,然后在代码上,使用此行self.player.view.frame=self.videoContainerView.bounds修改它,然后添加videoContainerView.addChildViewController(self.player),然后添加videoContainerView.addSubview(self.player.view),这将添加嵌套在您创建的视图中的播放器视图,并将设置相同的大小,试试看,告诉我works@LuizPerez我刚刚在我的主要问题中添加了更多的信息,你能看一下并告诉我它是否正确,我应该如何继续?好的,让我澄清一下,你正在将玩家视图添加到主视图中,对吗?您可以从故事板设置宽度,只需按住ctrl键并将其从播放器视图拖动到主视图,然后选择“相等宽度”(equal width),现在,如果播放器位于子视图中,并且播放器本身是另一个vi