混合开发已经非常流行了但是原生的直播播放器涉及到编解码的过程,如果项目是以webview为主的 那么原生的播放器只能浮动在webview的上面 会遮挡住导航条和
一些webview的按钮,这样底下的东西都操作不到了
1.把播放器放在webview的下面,让webview透明过去实践显示无法穿透
2.h5 播放H264 ,目前据说效果不好
3.h5 通过JSbridge拿到原生解码后的图像,显示成image 不断更新数据量较大,
4.原生自己做挡住部分的按钮和动画效果。
5.原生界面内嵌进入webview的层级关系里面
目前只有345方案稍微稳妥
為了最大限度的节省代码,我尝试了第5种方案
1.首先我分析了一下webview的层级关系,
2.发现他也是简简单单的subview而已打印出来以后,我就在想這些
类似的操作还是能够做的。那我要做的就是遍历整个subview的所有uiview
3.打印出来以后怎么找到我需要的那个视图呢一般的做法是取拿属性列表,再打印
属性数值这个太麻烦了,还不一定有我的做法是直接把nslog的东西传给string
这样就和你打印的东西保持一致了。
4.最后怎么做呢发现囿的webview是有独特的class名称的。那么我就判断string是否
包含这个就好了然后就把这个插入到视图中间去,就一下完成了内嵌
5.最终没有选用这个方案的原因是安卓webview没有层级关系,效率肯定没咱ios好了为了保持统一,我这思路做出来的东西最后不能用了还是老老实实做皮肤层的方案4。
注意一下做这个操作的时候别忘了要等页面push过去再做。苹果速度有点快好像要等几秒再做遍历,不然react还没渲染就给遍历完了当然找鈈到了图就不贴了,贴图会泄露机密这个思路留给后面的人吧。
如果有人闲的话那可以试试第3种方案看看是有多闲