为什么我的约束在swift/storyboard中无法正常工作?
我使用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
。但我该怎么做呢?
约束到侧边必须是-20这样的视频会出现全屏,0离开额外的空间,你可以看到这一点,如果你拖动以保证金的边缘,我会推荐给Ctrl拖动以主视图和等宽度为他的超级视图
@LuizPerez我只是增加了一些更多的信息,我的主要问题,你可以看看,并告诉我,是否可能是正确与否,以及如何我应该继续吗? – randomuser1
好吧,让我直截了当地说,你是在主视图中添加玩家视图吧?你可以设置从故事板的宽度,只需按Ctrl +从播放器视图拖动到主视图,并选择相等的宽度,现在如果玩家在一个子视图中,并且玩家本身是另一个视图,意味着你有3个图层是正确的? (mainView,childView和playerView),告诉我这是否正确 –
所以这是它的外观:http://imgur.com/IFSI1VS所以好像我有2层,我不知道如何达到第三个(玩家自己存储的确切位置)... – randomuser1
你在哪里调用你的代码? viewDidLoad中? – BJHStudios
是的,视图确实加载了,我想也许我应该以某种方式设置来自代码而不是故事板的约束,但仍然...如果我将其设置在故事板本身上,它应该没问题(在我看来)。 。 – randomuser1
该视图尚未在viewDidLoad中设置其大小。尝试调用从viewDidAppear,看看它是否表现不同 – BJHStudios