BarrageRenderer
BarrageRenderer copied to clipboard
第一条弹幕会从屏幕中间跑出来 后面 的就正常了
问题 确实不知道出在哪里
用用我写的 比这个好用很多
我也是這樣 ,但一開始用最普通的 walktextsprite 好像沒遇見過,轉用custom view 後就有,再轉回walktextsprite 也是由中間開始
BarrageRenderer 的版本号是多少? 早先的版本是有同样形式的bug,后来处理了
我是用 pod 直接导入的 我发一条弹幕 就不是从最右边出来的 。头疼 (2.1.0)版本的库
描述一下详细情况?
创建 :
-
(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
(BarrageRenderer *)barrageRender 这个属性是在VC的哪个阶段调用的?
(我最近没看群,麻烦你再申请一下,备注个原因)
viewDidLoad
设置 addSubview:BarrageRenderer.view 也是在 viewDidLoad 调用的? 你的 VC 是否使用了 Xib/Storyboard?
弹幕我定义了一个VIew “YXlBulletScreenView” 继承UIView 在VC 的viewDidLoad 初始化 YXlBulletScreenView 使用SDAutoLayout第三方库 进行布局 YXlBulletScreenView里面有对外街口 开始 结束弹幕 在YXlBulletScreenView 的 init 方法里执行 [self addSubview:self.barrageRender.view]; 这个时候 就初始化啦BarrageRenderer 然后 在我需要发送弹幕的时候 发送通知到这个到YXlBulletScreenView 然后执行 [_barrageRender receive:[self sendBulletScreen:dataDic]];
没有使用Xib/Storyboard?
[self addSubview:self.barrageRender.view];
这句话在调用的时候,最好保证 YXlBulletScreenView 的大小已经定了。
那我改成frame试试