Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
marsdan opened this issue May 15, 2017 · 12 comments
Open

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

marsdan opened this issue May 15, 2017 · 12 comments

Comments

@marsdan
Copy link

marsdan commented May 15, 2017

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

问题 确实不知道出在哪里

@Wbqqqq
Copy link

Wbqqqq commented May 24, 2017

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

@komayip
Copy link

komayip commented Jun 6, 2017

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

@unash
Copy link
Owner

unash commented Jun 16, 2017

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

@zhangsaiGitHub
Copy link

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

@unash
Copy link
Owner

unash commented Nov 24, 2017

描述一下详细情况?

@zhangsaiGitHub
Copy link

创建 :

  • (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

@unash
Copy link
Owner

unash commented Nov 27, 2017

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

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

@zhangsaiGitHub
Copy link

viewDidLoad

@unash
Copy link
Owner

unash commented Nov 27, 2017

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

@zhangsaiGitHub
Copy link

zhangsaiGitHub commented Nov 27, 2017

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

没有使用Xib/Storyboard?

@unash
Copy link
Owner

unash commented Nov 27, 2017

[self addSubview:self.barrageRender.view];

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

@zhangsaiGitHub
Copy link

那我改成frame试试

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants