在没有动画效果的avplayerlayer上设置videogravity
Posted
技术标签:
【中文标题】在没有动画效果的avplayerlayer上设置videogravity【英文标题】:Setting videogravity on avplayerlayer without animation effect 【发布时间】:2014-04-25 18:32:00 【问题描述】:我正在尝试在 avplayerlayer 上设置视频重力。当我像这样设置播放器层时:
[(AVPlayerLayer *)[self layer] setVideoGravity:AVLayerVideoGravityResizeAspectFill]
视频看起来像是掉落在视图上(某种动画效果)。有什么办法可以避免这种影响? 仅供参考,我尝试在设置重力之前和之后将 avplayer 分配给图层,但没有什么不同。当我不设置重力时,视频会按我想要的方式显示(屏幕上没有任何动画)。
【问题讨论】:
Disabling implicit animations in -[CALayer setNeedsDisplayInRect:]的可能重复 @David,如果它只是与图层相关(我已经尝试过您链接中的方法但它不起作用),那么为什么我只有在设置视频时才能看到动画重力? 您是否尝试在图层显示时更改重力? 以前怎么改? 回答这个问题意味着您可以看到更多的代码,而不仅仅是setVideoGravity:
调用。但基本上确保 setVideoGravity 调用是在您将视图/图层添加到视图/图层层次结构之前。
【参考方案1】:
AVPlayerLayer *vlayer;
vlayer.speed = isAnimated ? 1 : 999;
vlayer.videoGravity = AVLayerVideoGravityResizeAspect;
【讨论】:
以上是关于在没有动画效果的avplayerlayer上设置videogravity的主要内容,如果未能解决你的问题,请参考以下文章
在Vuejs中使用Transition在v-if上设置高度动画