• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

XGBarrage-implementation: 用绘制的方式来实现简单的弹幕效果及自定义表情键盘和系统 ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

XGBarrage-implementation

开源软件地址:

https://gitee.com/xiao66guo/XGBarrage-implementation

开源软件介绍:

#XGBarrage-implementation

用完全绘制的方式实现弹幕及自定义表情和系统键盘间切换

项目功能介绍:

1️⃣用完全绘制的方式来实现弹幕的内容;

2️⃣实现自定义表情键盘和系统键盘之间的切换功能;

3️⃣实现通过放大器来查看选中表情的功能;

4️⃣用Switch开关来实现弹幕的显示与隐藏功能;

5️⃣通过是否输入弹幕的内容来监听“发送”按钮是否可用;

6️⃣对自定义表情键盘进行单独的抽取和封装,可以单独使用;

7️⃣对绘制弹幕的方法进行单独的抽取和疯转,可以单独使用;

8️⃣实现对计算文字的真实尺寸的方法进行封装;

9️⃣可实现全屏(或满屏)弹幕的功能;

绘制弹幕内容的部分代码:

+(XGImage *)xg_imageWithBarrage:(XGBarrageModel *)barrage{         CGFloat marginX = 5;    CGFloat expressionW = XGBarrageExpressionW;    CGFloat expressionH = expressionW;    CGFloat iconW = XGBarrageH;    CGFloat iconH = iconW;    CGSize userNameSize = [barrage.userName sizeWithFont:XGBarrageUserNameFont maxSize:CGSizeMake(MAXFLOAT, MAXFLOAT)];    CGSize contentSize = [barrage.content sizeWithFont:XGBarrageContentFont maxSize:CGSizeMake(MAXFLOAT, MAXFLOAT)];    CGFloat contentTextW = iconH + marginX * 4 + userNameSize.width + contentSize.width + barrage.expression.count * expressionH;    CGFloat contentTextH = XGBarrageH;    CGSize contentTextSize = CGSizeMake(contentTextW, contentTextH);    UIGraphicsBeginImageContextWithOptions(contentTextSize, NO, 0.0);    CGContextRef ctx = UIGraphicsGetCurrentContext();    CGContextSaveGState(ctx);        CGContextAddEllipseInRect(ctx, CGRectMake(0, 0, iconW, iconH));    UIImage *icon = [UIImage imageNamed:barrage.icon];    CGContextClip(ctx);    [icon drawInRect:CGRectMake(0, 0, iconW, iconH)];    CGContextRestoreGState(ctx);        CGFloat bgX = iconW + marginX;    CGFloat bgW = contentTextW - bgX;    CGRect bgF = CGRectMake(bgX, 0, bgW, contentTextH);    barrage.type ? [[UIColor clearColor] set] : [[UIColor clearColor] set];    [[UIBezierPath bezierPathWithRoundedRect:bgF cornerRadius:XGBarrageH * 0.5] fill];        CGFloat userNameX = bgX + marginX;    CGFloat userNameY = (contentTextH - userNameSize.height) * 0.5;    [barrage.userName drawAtPoint:CGPointMake(userNameX, userNameY) withAttributes:@{NSFontAttributeName:XGBarrageUserNameFont,NSForegroundColorAttributeName:barrage.type ? [UIColor magentaColor] : [UIColor redColor]}];        CGFloat contentX = userNameX + userNameSize.width + marginX;    [barrage.content drawAtPoint:CGPointMake(contentX, userNameY) withAttributes:@{NSFontAttributeName:XGBarrageContentFont,NSForegroundColorAttributeName:barrage.type ? [UIColor whiteColor] : [UIColor whiteColor]}];        __block CGFloat expressionX = contentX + contentSize.width;    CGFloat expressionY = (contentTextH - expressionH) * 0.5;    [barrage.expression enumerateObjectsUsingBlock:^(NSString *expressionName, NSUInteger idx, BOOL * _Nonnull stop) {        UIImage *expression = [UIImage imageNamed:expressionName];        [expression drawInRect:CGRectMake(expressionX, expressionY, expressionW, expressionH)];        expressionX += expressionW;    }];        // 从当前位图上下文获得图片    UIImage *userIcon = UIGraphicsGetImageFromCurrentImageContext();    // 结束上下文    UIGraphicsEndImageContext();    ctx = nil;

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap