【发布时间】:2018-09-29 21:26:27
【问题描述】:
我正在以编程方式为我的应用添加介绍视频。我收到以下警告。任何想法我做错了什么? 我对 swift 和 iOS 开发非常陌生。
2018-04-19 13:11:56.295952+0200 [1779:395252] [布局约束] 无法同时满足约束。可能至少有一个 以下列表中的约束是您不想要的。尝试 这个:(1)查看每个约束并尝试找出你 不要期待; (2) 找到添加了不需要的约束的代码 或约束并修复它。 ( "", "", " (活动,名称:'|':UIStackView:0x15dd29110)>“, "", " (活动,名称:'|':UIStackView:0x15dd29110)>")
将尝试通过打破约束来恢复
在 UIViewAlertForUnsatisfiableConstraints 创建一个符号断点 在调试器中捕获它。中的方法 UIView 上的 UIConstraintBasedLayoutDebugging 类别列于 也可能有帮助。 2018-04-19 13:11:56.296790+0200 [1779:395252] [LayoutConstraints] 无法同时满足 约束。可能至少有一个约束条件 以下列表是您不想要的。试试这个:(1)看每个 约束并尝试找出您不期望的; (2) 找到 添加不需要的约束或约束的代码并修复它。 ( "", "", "", "UILayoutGuide:0x1d41bd180'UIViewLayoutMarginsGuide'
(活动,名称:'|':UIStackView:0x15dd29110)>“, " (活动,名称:'|':UIStackView:0x15dd29110)>")将尝试通过打破约束来恢复
在 UIViewAlertForUnsatisfiableConstraints 创建一个符号断点 在调试器中捕获它。中的方法 UIView 上的 UIConstraintBasedLayoutDebugging 类别列于 也可能有帮助。
var movieController: AVPlayer?
let playerViewController = AVPlayerViewController()
override func viewDidLoad() {
playVideo()
}
func playVideo() {
let path = Bundle.main.path(forResource: appData.videoFile, ofType: appData.videoExtension)
let url = URL(fileURLWithPath: path!)
movieController = AVPlayer(url: url)
NotificationCenter.default.addObserver(self, selector:#selector(movieFinished),name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: movieController?.currentItem)
playerViewController.player = self.movieController
playerViewController.delegate = self
playerViewController.view.frame = self.view.bounds
playerViewController.showsPlaybackControls = false
playerViewController.videoGravity = "AVLayerVideoGravityResizeAspectFill"
playerViewController.view.translatesAutoresizingMaskIntoConstraints = false
playerViewController.player?.play()
self.view.addSubview(playerViewController.view)
}
@objc func movieFinished() {
let value = UIInterfaceOrientation.portrait.rawValue
UIDevice.current.setValue(value, forKey: "orientation")
UIViewController.attemptRotationToDeviceOrientation()
UIView.animate(withDuration: 1.5, delay: 0, options: .curveEaseIn, animations: {
self.playerViewController.view.alpha = 0.0
}, completion: { (finished: Bool) in
self.playerViewController.view.removeFromSuperview()
})
}
【问题讨论】:
-
尝试在
viewWillAppear上添加这个 -
@Lu_ 谢谢,但即使添加了 override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) playVideo() }
-
尝试添加一个专用于视频的视图而不是放置它
playerViewController.view -
堆栈视图在哪里?为不可满足的约束添加符号断点(请参阅错误消息)。它将停在它断裂的确切点。始终仔细阅读错误,它有一些关于错误以及如何识别问题的提示
-
@user1046037 将播放器添加到子视图时会中断 LOL!我很迷茫,这个错误会阻碍应用商店中的应用吗?
标签: ios swift swift4 avplayerviewcontroller