前言
最近的项目在做直播,所以这一段时间对弹幕进行了研究。网上找了一下,Android端那边有DanmakuFlameMaster这样有名的弹幕库;iOS这边就比较少了,找到BarrageRenderer这个库。用了一下这个库也观摩了部分源码,可定制性很强,但是对于我自己的需求来说,就稍微有点大材小用了。所以就干脆自己写了一个开源的弹幕库SKDanmakuManager,功能不多,但使用还是比较方便,最少只需要两句话就可以搞定。
功能特点
— 弹幕基于CATextLayer,渲染更快性能消耗更少
— 弹幕的播放、暂停、显示和隐藏
— 速度范围设置
— 弹幕的垂直间距及水平间距设置
— 字体大小、颜色修改
— 开启/关闭碰撞检测
— 小屏及全屏切换
— 支持emoji表情
— 支持自定义字体
TODO:
— 增加对弹幕背景的支持
— 增加悬浮弹幕
系统要求
iOS 8.0+
效果图
由于简书上传大小限制,就简单传几张,具体的请到Github上看效果。
播放 显示/隐藏 暂停/继续安装
请到Github上查看(偷懒)。
使用方法
初始化
@property(nonatomic, strong) SKDanmakuManager *manager;
...
_manager = [SKDanmakuManager managerWithLayer:_playerLayer];
//或者
//_manager = [[SKDanmakuManager alloc] init];
//_manager.layer = _playerLayer;
创建并播放
[_manager createDanmakuWithText:_inputTextField.text color:[UIColor whiteColor]];
到这里,就可以正常使用啦,以下就是一些可以定制的部分了。
屏幕大小改变
当视频的frame改变后(如进入全屏、退出全屏等),应该使用以下方法来刷新弹幕:
[_manager layoutDanmakusWithFontSize:24];
可配置参数
///以下参数都有默认值,初始化后可以不改变
//是否开启碰撞检测
//_manager.allowCovered = NO;
//设置自定义弹幕字体名称
//_manager.fontName = @"Papyrus";
//设置弹幕字体大小
_manager.fontSize = 15.0f;
//设置弹幕最大/最小速度
//_manager.maxSpeed = 100.0f;
//_manager.minSpeed = 50.0f;
//设置弹幕之间的垂直间距
//_manager.verticalSpacing = 10.0f;
//设置弹幕之间的水平间距
//_manager.horizontalSpacing = 10.0f;
其他功能
其他诸如暂停、隐藏等功能,就不一一赘述了(懒),可以去头文件里查看。
//请到头文件查看其他功能
'SKDanmakuManager.h'
最后
第一次写开源库,许多地方可能不尽人意,后面有时间我会继续维护和优化这个库的。如果觉得本库还不错,希望您能够到Github上帮忙star一下;如果您使用中有问题或者有什么意见建议请提交issue或者在下面留言,只要我看到了就会回复,谢谢。
网友评论