登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

这是一个iOS高扩展的弹幕渲染库,适用大多数直播类弹幕...

[复制链接]
来自: kingly09 分类: iOS精品源码 上传时间: 2016-11-26 23:00:37
Tag:弹幕效果 直播 图片 文本 消息

项目介绍:

KYBarrageKit

这是一个iOS高扩展的弹幕渲染库,适用大多数直播类弹幕场景。

gitHub下载:https://github.com/kingly09/KYBarrageKit

原因

公司是做直播电商平台的,产品需要在直播界面有弹幕效果,还有一些特殊的动画效果,根据产品提供的需要,结合网上的一些开源项目,自己造了轮子,写一个直播类弹幕渲染库,以来满足我们产品多变的功能需求。

特征

  • 支持弹幕的4个方位滚动方向;

  • 自定义弹幕的滚动速度;

  • 弹幕信息为NSMutableAttributedString类型,支持图片和文字弹幕,emoji表情符号等;

  • 当是弹幕为KYBarrageDisplayTypeImage类型是,支持弹幕自定义高度;

  • 弹幕的类型可以扩展自定义(目前支持纯文本和图文);

  • 采用CABasicAnimation实现来弹幕动画效果;

  • 支持批量主动发送弹幕,弹幕的暂停,清除,重启,开始等;

  • 支持弹幕内存预警,清除弹幕缓冲池。

实现一些基础功能,更多的功能后续完善中......

效果如下图所示:

反馈

  • 如果需要帮助,可以使用QQ: 362108564联系我 或weibo: http://weibo.com/balenn 留言.

  • 如果你发现了一个bug,打开一个 issue.

  • 如果您有一个功能请求,请打开一个 issue.

  • 如果您想贡献,请提交一个请求.

如果有任何你觉得不对的地方,或有更好的建议,以上联系都可以联系我。 十分感谢!

安装

要求

  • Xcode 7 +

  • iOS 7.0 +

手动安装

下载项目后,将子文件夹 KYBarrageKit 拖入到项目中, 导入头文件KYBarrageKit.h 开始使用.

CocoaPods安装

你可以在 Podfile 中加入下面一行代码来使用 KYBarrageKit

    pod 'KYBarrageKit'

使用 cocoaPods 管理第三方库, 如果电脑没有安装 cocoapods,请先安装 cocoapods。安装方式可参考:[最新的cocoapods安装] (http://blog.sina.com.cn/s/blog_6ff6523d0102x8dq.html)

使用

  • 在需要使用弹幕渲染功能的地方

     #import “KYBarrageKit”
  • 创建一个 KYBarrageManager *manager 对象,并将其 view add 到你想要添加弹幕动画的 view 上,如下面所示:

@interface ViewController ()
@property (strong, nonatomic) KYBarrageManager *manager;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  // Do any additional setup after loading the view, typically from a nib.
   self.view.backgroundColor = [UIColor whiteColor];
    _manager = [KYBarrageManager manager];
    _manager.bindingView = self.view;
    _manager.scrollSpeed = 30;     
    _manager.refreshInterval = 1.0;  
}
  • 发送一个弹幕

int a = arc4random() % 100000;
    NSString *str = [NSString stringWithFormat:@"I'm coming %d ",a];
    
    NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:str];
    [attr addAttribute:NSForegroundColorAttributeName value:RandomColor() range:NSMakeRange(0, str.length)];
    
    KYBarrageModel *m = [[KYBarrageModel alloc] initWithBarrageContent:attr];
    [_manager showBarrageWithDataSource:m]; // Scroll Barrage 
  • 设置弹幕显示区域,支持四个方向,默认为 KYBarrageDisplayLocationTypeDefault 整个显示区域

全局设置

_manager.displayLocation = KYBarrageDisplayLocationTypeTop;  

或 当个子弹幕设置

   KYBarrageModel *m = [[KYBarrageModel alloc] initWithBarrageContent:attr];
    m.displayLocation       = _manager. KYBarrageDisplayLocationTypeTop;
 

支持显示区域对应NSInteger的枚举:

KYBarrageDisplayLocationTypevaluenote
KYBarrageDisplayLocationTypeDefault0整个显示区域
KYBarrageDisplayLocationTypeTop1顶部部分
KYBarrageDisplayLocationTypeCenter2中间部分
KYBarrageDisplayLocationTypeBottom3底部部分
KYBarrageDisplayLocationTypeHidden4不显示
  • 设置弹幕显示位置,支持四个方向。

全局设置

_manager.scrollDirection = KYBarrageScrollDirectRightToLeft;  
 

或 当个子弹幕设置

   KYBarrageModel *m = [[KYBarrageModel alloc] initWithBarrageContent:attr];
    m.direction       = _manager.scrollDirection;
 

支持四个方向对应NSInteger的枚举:

KYBarrageScrollDirectionvaluenote
KYBarrageScrollDirectRightToLeft0<<<<<
KYBarrageScrollDirectLeftToRight1>>>>>
KYBarrageScrollDirectBottomToTop2↑↑↑↑↑
KYBarrageScrollDirectTopToBottom3↓↓↓↓↓
  • 主动拉取弹幕数据发弹幕,设置 KYBarrageManagerDelegate 委托,调用-delegate barrageManagerDataSource返回数据

设置代理委托

 _manager.delegate = self;
 [_manager startScroll]; //开启主动获取弹幕

调用方法

- (id)barrageManagerDataSource {
    
    int a = arc4random() % 10000;
    NSString *str = [NSString stringWithFormat:@"%d digg",a];
    
    NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:str];
    [attr addAttribute:NSForegroundColorAttributeName value:RandomColor() range:NSMakeRange(0, str.length)];
    
    KYBarrageModel *m = [[KYBarrageModel alloc] initWithBarrageContent:attr];
    m.displayLocation = _manager.displayLocation;
    m.direction       = _manager.scrollDirection;
    m.barrageType = KYBarrageDisplayTypeImage;
    m.object = [UIImage imageNamed:[NSString stringWithFormat:@"digg_%d",arc4random() % 10]];
    return m;
}
  • 设置清除弹幕。

[_manager closeBarrage];
  • 设置弹幕的暂停与恢复。

       // 1. 在屏幕上的阻塞被暂停,停止获取新的阻塞
       // 2. 当前的屏幕上的弹幕重新滚动,并获得一个开始的新弹幕推送
       [_manager pauseScroll];
  • 设置弹幕的类型目前支持纯文本KYBarrageDisplayTypeDefault 和图文KYBarrageDisplayTypeImage,可以在 KYBarrageScene自定义其他的类型。

    m.barrageType = KYBarrageDisplayTypeImage;

其他

支持弹幕的点击事件

如果弹幕为KYBarrageDisplayTypeImage型的弹幕时,请重写ViewControllertouchesBegan 方法

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    CGPoint touchPoint = [touch locationInView:self.view];
    [[_manager barrageScenes] enumerateObjectsUsingBlock:^(BarrageScene * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        if ([obj.layer.presentationLayer hitTest:touchPoint]) {
           /* if barrage's type is ` `KYBarrageDisplayTypeImage` `, add your code here*/
            NSLog(@"message = %@",obj.model.message.string);
        }
    }];
}

如DEMO里面的点击弹幕,弹幕停顿3s后,进行滚动,也可以扩展其他事件,如下图所示:

鼓励

它若不慎给您帮助,请不吝啬给它点一个star,是对它的最好支持,非常感谢!

code4app

相关源码推荐:

我来说两句
*滑动验证:
所有评论(75)
简mm 2017-9-16 20:50:26
楼主,我按照您说的这样写了,有的时候会出现弹幕重叠现象,不知道您有什么解决方法么
回复
code4app热心网友 2017-9-16 17:21:00
我只是路过打酱油的。
回复
code4app热心网友 2017-9-8 15:56:55
虽不明,但觉厉!
回复
code4app热心网友 2017-8-29 04:25:11
楼主威武啊,Code4App有你更给力!
回复
code4app热心网友 2017-8-25 15:45:48
强烈支持楼主ing……
回复
code4app热心网友 2017-8-23 10:03:06
我只是路过打酱油的。
回复
code4app热心网友 2017-8-20 17:33:46
楼主威武啊,Code4App有你更给力!
回复
code4app热心网友 2017-8-7 13:49:45
楼主用心了,内容非常精彩。
回复
code4app热心网友 2017-8-7 09:16:00
淡定,淡定,淡定……
回复
提取码:  下载次数:59 状态:已购或VIP 售价:0(原价:10)金钱 下载权限:初级码农 
2694 4 59
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,742864542

如何获得代码达人称号?

代码贡献英雄榜
用户名 下载数
通过邮件订阅最新 Code4App 信息
上一条 /4 下一条
联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表