unash / BarrageRenderer

一个 iOS 上的弹幕渲染库.
https://github.com/unash/BarrageRenderer
MIT License
2.2k stars 453 forks source link

弹幕过程中,弹出键盘飘动的文字会明显卡顿一下,这个要怎么解决。 #52

Open xy853535182 opened 7 years ago

xy853535182 commented 7 years ago

因为我显示弹幕的页面底下有个输入框,当激活输入框弹起键盘,可以明显的感觉到飘动的弹幕文字会明显卡顿一下,这个能解决吗?

xy853535182 commented 7 years ago

看了一下源码,弹幕文字的动画是通过注册CADisplayLink 指定update方法不停的改变的x和y坐标实现动画的,但是UITextField键盘事件的优先级比CADisplayLink事件高,runloop被添加进来了一个高优先级的任务,CADisplayLink下一次的调用就会被暂停转而先去执行高优先级的任务,然后在接着执行CADisplayLink的调用,从而造成动画过程的卡顿,使动画不流畅。作者能帮忙解决一下这个问题吗,建议动画能改成用CABasicAnimation的形式,估计能解决此问题。

unash commented 7 years ago

BarrageRenderer 没有用 CAAnimation,现有思路下不可能改成 CAAnimation 实现方式。目前 CADisplayLink 使用的是 RunLoopCommonModes,这已经是一个高优先级了。卡顿很严重吗?

xy853535182 commented 7 years ago

很严重倒是不会,就是弹起键盘的时候卡顿一下,强迫症感觉难受,不是很完美,我这边QA也给提了bug,寻思着你这边能否给予修复。你可以github上的demo下载下来加个输入框感受一下。

chakery commented 7 years ago

我也遇到了这样的问题,键盘弹起时,弹幕突然停顿了一下。

hahaGitHub commented 7 years ago

对呢,这个问题能不能修改一下,毕竟影响到了用户体验

langlang1015 commented 6 years ago

@xy853535182 键盘停顿的问题解决了吗??