1.需要一个显示弹幕的view的类(里面包括弹道、弹幕状态的block回调、弹幕的内容、弹道的图片、开始、结束动画的方法等),需要一个继承自NSObject的工具类(包括数据源数组、运行过程中的已显示弹幕的数据数组,存储弹幕的数组,开始、结束的方法等),统一管理弹幕。
2.一般需要实现的业务逻辑有:
1)每个弹幕都有自己的弹道,弹道需要随机分配。
2)弹幕从右边屏幕到左边屏幕匀速移出的动画,使用UIView的animation动画即可实现。一般会有弹幕越长,移动速度越快的需求。
弹幕移动的距离已知(屏幕的宽,弹幕自身的宽),只需要将每个弹幕的时间设置为一样的,距离除以时间,即可使每个弹幕移动速度不一样。
3)当一个弹幕完全进入屏幕之后,可以在该弹道后面追加弹道,及从数据模型的数组中,取出新一条的数据,创建新的弹道的view.
注意:这个地方需要使用延迟动画的方法,如果使用UIView的延迟动画,后面停止弹幕的时候,取消动画会出现问题,所以这里需要使用performSelector delay这个方法,后面停止的时候,调用NSObject 的cancel开头的一个方法。
4)当一个弹幕完全移出屏幕之后,需要将该弹幕移除。
5)停止弹幕 :需要将存有弹幕的数组清空,停止每个弹幕的动画。
6)循环播放弹幕:在工具类中写一个外部接口的方法,当调用这个方法时,将之前保存在数组中的弹幕清空,重新创建弹幕即可。当所有弹幕都移出屏幕时,调用这个方法
7)可以在弹幕的前边添加圆形图片,用于显示用户的头像。
8)弹幕的状态一共分为三种,进入,完全进入,完全移出,可以在弹幕的view类中定义一个枚举,有三种状态,根据弹幕不同的状态,回调给工具类,工具类根据不 同的状态进行相应的处理。