这似乎只是 iPhone 6S Plus 的设备特定错误。
步骤:
AVPlayerDemoPlaybackView.xib
,以便MPlayback View
周围有边距顶部和侧面会出现1px灰线。
任何人都知道如何解决这个问题?
我试图设置一个遮挡顶部的不透明视图,但该线仍将显示在不透明视图之上!
答案 0 :(得分:12)
将AVPlayerLayer
的{{3}}属性设置为true
会使边框消失。
答案 1 :(得分:2)
我的建议是,因为你的用例是一个动画循环来放弃AVPlayer并使用UIImageView。
UIImage
有animatedImage(with:duration:)
,您可以在其中输入图像数组并根据需要设置它们的动画。
我认为这可以解决您的问题。根据我的经验,AVPlayer在iOS 10中有点不稳定。我认为,因为你只是在6s +和7s +上看到这个问题就证明它有一些问题。
如果您绝对致力于找出AVPlayer,请先向Apple提交错误报告。然后尝试在AVPlayer后面添加一个UIImageView,将图像设置为视频中的空白帧。这是一种hacky解决方案,但它可能会起作用。另外,查看this堆栈溢出帖子。它可能会解释您使用AVPlayer时遇到的问题。
祝你好运。答案 2 :(得分:1)
我尝试了Nate4436271的答案,它对我有用,我的意思是,有同样的问题并摆脱了灰线,但将shouldRasterize属性设置为true,使我的视频失去了图像质量。所以,我将playerLayer的videoGravity设置为AVLayerVideoGravityResizeAspectFill并且我摆脱了线条,同时保持了图像质量:)
这是我做的:
playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill
AspectFill符合我的需求并解决了这个问题。您可能希望评估其他选项是否更适合您的需求,例如AspectFit或Resize。
希望这会有所帮助:)
答案 3 :(得分:1)
不仅shouldRasterize
,还需要设置rasterizationScale
。
playerLayer.shouldRasterize = true
playerLayer.rasterizationScale = UIScreen.main.scale
答案 4 :(得分:0)
这是我的看法:对我而言,最简单的解决方法是将1px / 2px的高视图放置在视频层的顶部,并为其提供所需的颜色-这样,您可以“隐藏只需在上面放一些东西就可以看到灰色边框。不用说这是超级hacky,但是它可以工作。您可能需要根据videoGravity
属性对实际位置进行一些计算。
答案 5 :(得分:-1)
顶部的灰线不过是导航栏。您可以将其隐藏在控制器的viewdidload中。一切准备就绪。