您的位置:首页 > 移动开发 > IOS开发

ios 弹幕实现及封装

2016-11-28 20:26 357 查看
周末看了个介绍弹幕实现的视频,看完后,按自己的想法又重新设计、实现了一遍(感觉视频中的实现有些复杂化了,设计上也存在些问题),并封装了一下传到了git上,可以实现弹幕的开始、暂停与停止的基本功能。本身使用十分方便,内部逻辑比较简单,且有比较详细注释,主要为了方便使用者的二次定制开发与修改

ZBarrage

@interface ZBarrage : NSObject

//弹幕是否处于播放中(暂停也属于播放中)
@property (nonatomic,readonly) BOOL isPlaying;
//弹幕是否被暂停
@property (nonatomic,readonly) BOOL isPaused;
//当所有弹幕播放完成时回调
@property (nonatomic,copy) void(^allBulletsFlyFinishBlk)();

//初始化方法
//参数:弹幕数据数组
-(instancetype)initWithComments:(NSMutableArray *)comments;

//生成弹幕视图
//参数:视图frame、弹道数、播放持续时长
-(UIView *)generateBarrageView:(CGRect)frame trackNum:(int)trackNum flyDuration:(CGFloat)duration;

//开始、暂停播放
-(void)startPlay;
//停止播放
-(void)stopPlay;

@end


ZBulletView
//子弹状态
typedef enum
{
FlyStart,//开始飞行
FlyAppeared,//正好完全飞入屏幕
FlyEnd//飞行结束
}FlyStatus;

@interface ZBulletView : UIView

//飞行状态回调
@property (nonatomic,copy) void(^flyStatusBlk)(FlyStatus flyStatus);
//子弹所在轨道
@property (nonatomic,readonly) int trackNum;

//初始化方法
//参数:子弹frame  子弹内容  子弹飞行时长  子弹所在轨道
-(instancetype)initWithFrame:(CGRect)frame comment:(NSString *)comment flyDuration:(CGFloat)duration trackNum:(int)trackNum;
//开始飞行
-(void)startFly;
//停止飞行
-(void)stopFly;
//暂停飞行
-(void)pauseFly;
//恢复飞行
-(void)resumeFly;

@end

git地址:

点击打开链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: