求大神指点一个 iOS 视频全屏的细节实现。

2017-03-20 16:14:41 +08:00
 kera0a
iOS 做视频全屏旋转动画时, AVPlayer 并不会跟随 Frame 动画,
而是直接变成设置的 frame 值。如图,黑色是全屏时的大小。退出全屏动画刚开始, AVPlayer 就变成了最终大小,没有跟随 frame 动画




动画代码只有两行 设置 transform 和 frame

下了不下 10 个开源库读代码,均存在此问题。但是新浪微博的实现很完美,所以知道应该是可以实现的,就是没什么头绪。希望大神们指点一下,或者如果你知道有哪个开源实现可以告诉我。

先谢谢各位大哥了~
3236 次点击
所在节点    iDev
10 条回复
kevinroot
2017-03-20 16:43:31 +08:00
我记得设计屏幕方向就好
// 全屏按钮点击
if ([UIDevice currentDevice].orientation != UIDeviceOrientationPortrait) {
NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait];
[[UIDevice currentDevice] setValue:value forKey:@"orientation"];
} else {
NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeRight];
[[UIDevice currentDevice] setValue:value forKey:@"orientation"];
}

// 可能用的是事件通知
[[NSNotificationCenter defaultCenter] postNotificationName:MPMoviePlayerWillEnterFullscreenNotification object:nil];
pheyer
2017-03-20 16:45:26 +08:00
一个不是办法的办法:可以逆向一下新浪微博 app 看看。
sobigfish
2017-03-20 16:49:53 +08:00
截屏》隐藏 player 》动画》显示 player ?
kera0a
2017-03-20 17:30:28 +08:00
@kevinroot 谢谢大兄弟,好像不行~

@pheyer 逆向到这个地步,应该很难很难吧~ 我觉得我应该做不到 囧~~


@sobigfish 谢谢!不过这就出现了另外一个问题,动画期间 视频不动了~
sobigfish
2017-03-20 17:54:42 +08:00
@kera0a #4 直播? 录像视频播放的话暂停也好啊,不会遗漏(可能的)重要画面。
https://github.com/BrikerMan/BMPlayer
https://github.com/easyui/EZPlayer
看他们的截图,转屏好像是有过渡的
kera0a
2017-03-20 18:12:49 +08:00
@sobigfish 谢谢大兄弟~不是直播。
如果不追求这个的细节的话,效果也还可以(动画太快用户留意不到),只是对别人的完美实现感到好奇。

看了你这两个库,也没有过渡动画。囧
HelveticaNeue
2017-03-20 20:37:12 +08:00
能否给个 demo ,我可以帮着调一下
kera0a
2017-03-21 10:50:01 +08:00
@wuyuehyang 谢谢大兄弟! ZFPlayer 存在这个问题,并且他的全屏逻辑非常简单适合调试。如果你有兴趣的话可以调试下这个库。
HelveticaNeue
2017-03-21 18:57:06 +08:00
@kera0a
我看了一眼 ZFPlayer 的代码,质量实在太差,眼疼不想看。
我写了一个 demo ,转屏时没有发现你说的问题,你看一下是不是这个效果
https://github.com/WuYuehYang/TestAVPlayerRotation
kera0a
2017-03-21 19:54:07 +08:00
@wuyuehyang 非常感谢,你这个没有问题。
我自己测试后发现
AVPlayer 改变方向动画 跟随 ViewController 横竖屏动画时没问题。
我的实现是自己做 transform 动画改变角度(不做一些处理会有上面的问题,普通的 AVPlayer 做一些处理也能显示完美)

不过可惜的是 我用的不是单纯的 AVPlayer ,是 AsyncDisplayKit 的 ASVideoNode ,并且加了很多 flex 布局(这些布局倒是动画正常), 这个控件用你的方法还是会有问题

不过总算知道个大概路线了,我先自己慢慢试吧,看看 ASVideoNode 的源码先折腾下。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/348869

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX