BarrageRenderer icon indicating copy to clipboard operation
BarrageRenderer copied to clipboard

第一条弹幕会从屏幕中间跑出来 后面 的就正常了

Open marsdan opened this issue 7 years ago • 12 comments

88067f78-d899-4f9f-ad96-bd6006a5eec3 b764dc2c-233c-4b78-b666-9e5c09f67875

问题 确实不知道出在哪里

marsdan avatar May 15 '17 03:05 marsdan

用用我写的 比这个好用很多

Wbqqqq avatar May 24 '17 06:05 Wbqqqq

我也是這樣 ,但一開始用最普通的 walktextsprite 好像沒遇見過,轉用custom view 後就有,再轉回walktextsprite 也是由中間開始

komayip avatar Jun 06 '17 09:06 komayip

BarrageRenderer 的版本号是多少? 早先的版本是有同样形式的bug,后来处理了

unash avatar Jun 16 '17 23:06 unash

我是用 pod 直接导入的 我发一条弹幕 就不是从最右边出来的 。头疼 (2.1.0)版本的库

zhangsaiGitHub avatar Nov 24 '17 07:11 zhangsaiGitHub

描述一下详细情况?

unash avatar Nov 24 '17 07:11 unash

创建 :

  • (BarrageRenderer *)barrageRender { if (!_barrageRender) { _barrageRender = [[BarrageRenderer alloc] init]; //_barrageRender.delegate = self; _barrageRender.redisplay = YES; _barrageRender.speed = 120; _barrageRender.canvasMargin = UIEdgeInsetsMake(0, 0, 0, 0); NSUserDefaults *def = [NSUserDefaults standardUserDefaults]; if([[def valueForKey:@"screen"] boolValue]) { [_barrageRender stop]; } else { [_barrageRender start]; } } return _barrageRender; } 使用 : //插入设置的字体的设置 BarrageDescriptor * descriptor = [[BarrageDescriptor alloc]init]; descriptor.spriteName = NSStringFromClass([BarrageWalkTextSprite class]); NSMutableAttributedString *attributed = [[NSMutableAttributedString alloc] initWithString:messageStr];

    NSDictionary *userNametextAttributesDic = @{NSFontAttributeName:[UIFont systemFontOfSize:50 * widthRatio], NSForegroundColorAttributeName:[UIColor colorWithHexString:@"#efc303"]};

    [attributed addAttributes:userNametextAttributesDic range:NSMakeRange(0,userNameStr.length)];

    NSDictionary *userMsgAttributesDic = @{NSFontAttributeName:[UIFont systemFontOfSize:50 * widthRatio], NSForegroundColorAttributeName:[UIColor whiteColor]}; [attributed addAttributes:userMsgAttributesDic range:NSMakeRange(userNameStr.length,userMsgStr.length + 1)]; //插入图片 [attributed insertAttributedString:[NSAttributedString attributedStringWithAttachment:attachment] atIndex:0];

    [attributed addAttribute:NSBaselineOffsetAttributeName value:@(0.5 * (60 * widthRatio)) range:NSMakeRange(1, messageStr.length)];

    //其他设置 descriptor.params[@"attributedText"] = attributed; descriptor.params[@"speed"] = @(120); descriptor.params[@"backgroundColor"] = kESRGBA(240, 240, 240, 0.3); descriptor.params[@"viewClassName"] = NSStringFromClass([UILabel class]); 出现的问题 : 当第一次执行这个方法的时候 receive 弹幕不是从最右侧移动出来 而是从中间靠左弹出 和楼上出现的问题一样 。另外我加你们的QQ群 没有 通过审核 2832613323

zhangsaiGitHub avatar Nov 25 '17 06:11 zhangsaiGitHub

(BarrageRenderer *)barrageRender 这个属性是在VC的哪个阶段调用的?

(我最近没看群,麻烦你再申请一下,备注个原因)

unash avatar Nov 27 '17 01:11 unash

viewDidLoad

zhangsaiGitHub avatar Nov 27 '17 02:11 zhangsaiGitHub

设置 addSubview:BarrageRenderer.view 也是在 viewDidLoad 调用的? 你的 VC 是否使用了 Xib/Storyboard?

unash avatar Nov 27 '17 02:11 unash

弹幕我定义了一个VIew “YXlBulletScreenView” 继承UIView 在VC 的viewDidLoad 初始化 YXlBulletScreenView 使用SDAutoLayout第三方库 进行布局 YXlBulletScreenView里面有对外街口 开始 结束弹幕 在YXlBulletScreenView 的 init 方法里执行 [self addSubview:self.barrageRender.view]; 这个时候 就初始化啦BarrageRenderer 然后 在我需要发送弹幕的时候 发送通知到这个到YXlBulletScreenView 然后执行 [_barrageRender receive:[self sendBulletScreen:dataDic]];

没有使用Xib/Storyboard?

zhangsaiGitHub avatar Nov 27 '17 03:11 zhangsaiGitHub

[self addSubview:self.barrageRender.view];

这句话在调用的时候,最好保证 YXlBulletScreenView 的大小已经定了。

unash avatar Nov 27 '17 06:11 unash

那我改成frame试试

zhangsaiGitHub avatar Nov 27 '17 06:11 zhangsaiGitHub