KYBarrageKit 1.0.2

KYBarrageKit 1.0.2

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布最新发布2017年8月

kingly09 维护。



这是一个 iOS 高效渲染弹幕库,适用于大多数直播弹幕场景。

中文介绍

reason

公司正在做直接业务平台,产品需要与直播效果中的弹幕进行接口对接,有一些特殊的动画效果,根据产品的需求,将一些开源项目与互联网结合,他制作了轮子,编写了一个直播弹幕渲染库,以满足我们产品的功能需求。

features

  • 4个方向的弹幕滚动方向支持;
  • 可自定义弹幕滚动速度;
  • 支持 NSMutableAttributedString 类型的信息弹幕,图片和文字弹幕,表情符号等;
  • 当弹幕类型为 KYBarrageDisplayTypeImage 时,支持自定义弹幕高度;
  • 类型可扩展(当前自定义弹幕支持纯文本和图形);
  • 使用 CABasicAnimation 实现弹幕的动画效果;
  • 支持批量发送弹幕,暂停、重新启动、移除、开始等;
  • 支持弹幕内存警告,移除弹幕缓存池。

为了实现一些基本功能,后续将继续改进功能......

效果如下所示

feedback

  • 如果您需要帮助,您可以使用 QQ: 362108564 联系我或[点击这里](http://weibo.com/balenn)。
  • 如果您发现了 bug,请打开issue
  • 如果您有功能请求,请打开issue
  • 如果您想贡献力量,请提交 pull request。

如果您认为有什么错误,或者有更好的建议,请通过以上联系方式联系我。非常感谢。

installation

requirements

  • Xcode 7+
  • iOS 7.0+

installation manual

首先 下载项目,将 KYBarrageKit 子文件夹添加到项目中,并导入 KYBarrageKit.h 头文件。

usage

  • 在需要使用本地弹幕渲染功能的场景下
 #import “KYBarrageKit”
  • 创建一个 KYBarrageManager *manager 对象,并在视图中添加你想要添加的弹幕动画视图,如下所示
@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 枚举值

KYBarrageDisplayLocationType 注意
KYBarrageDisplayLocationTypeDefault 0 整个显示区域
KYBarrageDisplayLocationTypeTop 1 顶部区域
KYBarrageDisplayLocationTypeCenter 2 中间区域
KYBarrageDisplayLocationTypeBottom 3 底部区域
KYBarrageDisplayLocationTypeHidden 4 隐藏
  • 设置弹幕位置显示支持四个方向。

全局设置

_manager.scrollDirection = KYBarrageScrollDirectRightToLeft;  
 

或当子集弹幕

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

支持四个方向的 NSInteger 枚举值

KYBarrageScrollDirection 注意
KYBarrageScrollDirectRightToLeft 0 <<<<<
KYBarrageScrollDirectLeftToRight 1 >>>>>
KYBarrageScrollDirectBottomToTop 2 ↑↑↑↑↑
KYBarrageScrollDirectTopToBottom 3 ↓↓↓↓↓
  • 激活拉取数据设置弹幕,委托 KYBarrageManagerDelegate,调用 -delegate barrageManagerDataSource 数据

设置代理,开启访问激励弹幕

 _manager.delegate = self;
 [_manager startScroll]; //Open Access Initiative barrage

调用方法

- (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. On the screen the barrage is suspended, and stop acquiring new barrage
    // 2. The current barrage on the screen to start rolling, and to obtain a new barrage
   [_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 弹幕内部,滚动后暂停 3 秒,也可以扩展到其他事件,如下所示

鼓励

如果它无意中给你提供了帮助,请不要以此表示支持它,这是最好的支持,非常感谢!

LICENSE

KYBarrageKit 采用 MIT 协议授权。访问 LICENSE 文件获取更多信息。