为什么我的约束在swift / storyboard中无法正常工作?

时间:2016-09-21 21:51:07

标签: ios swift storyboard constraints nslayoutconstraint

我正在使用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(纵向模式),我考虑分配以下约束:

enter image description here

enter image description here

现在,当我在iphone 6s plus上打开它时,我看到了:

enter image description here

所以 - 因为我把尾随空格设置为0 - 为什么屏幕右侧还有这条白色条纹?

另一方面,在iphone 4s上,视频被裁剪:

enter image description here

在iphone 6上很好:

enter image description here

我应该采用什么样的约束条件,以便它在每台设备上看起来与iphone 6相同?我只是想让它水平拉伸,然后垂直长度应自动调整(以保持宽高比480x640)

============================================== < / p>

伙计们,正如我在下面的评论部分所写的那样 - 当我移除玩家并使用相同的约束离开普通视图时 - 一切正常,所以它必定是玩家本身的错...你能帮助我区分什么那可能是错的?

============================================== < / p>

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

enter image description here

这意味着还有一些其他图层可以存储玩家视图本身。我浏览了插件的代码,发现了这个:

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。但是我怎么能这样做呢?

1 个答案:

答案 0 :(得分:0)

侧边距的约束必须为-20所以视频可以全屏显示,0留下额外的空间,你可以看到这个如果你将视图拖到边缘的边缘,我建议ctrl拖动到主视图和与他的超级视图相等的宽度