美文网首页
一个简

一个简

作者: 弹钢琴的安徒生 | 来源:发表于2016-01-15 23:20 被阅读211次

                             一个简单的弹幕效果

      说到斗鱼,很多盆友肯定都知道,作为一名斗鱼的忠实用户。对斗鱼的弹幕效果是再熟悉不过了,最近自己动手写了一个demo,效果一般,大家就看看吧。

好了,废话不多说,直接上代码。

#import "ViewController.h"

#define screenW    [UIScreen mainScreen].bounds.size.width

#define textHeight  40

#define textFont    14.f

@interface ViewController (){

NSInteger _index;

CGFloat _font;

}

@property (nonatomic,strong) NSArray *titleArray;

@end

@implementation ViewController

- (NSArray *)titleArray

{

if (_titleArray == nil) {

NSString *path = [[NSBundle mainBundle] pathForResource:@"danmu.plist" ofType:nil];

_titleArray = [NSArray arrayWithContentsOfFile:path];

}

return _titleArray;

}

/**

随机颜色

随机高度

运行循环

创建label方法

动态计算label的宽高

*/

- (void)viewDidLoad {

[super viewDidLoad];

self.view.backgroundColor = [UIColor lightGrayColor];

_index = 0;

// 时间直接加入到运行循环

[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(setUpTitleLabel) userInfo:nil repeats:YES];

}

-(void)setUpTitleLabel

{

_index ++;

if (_index == self.titleArray.count) {

_index = 0;

}

NSString *title = self.titleArray[_index];

UILabel *textLabel = [[UILabel alloc] init];

textLabel.text = title;

//    textLabel.frame = [self textLabelWithString:title];

接上面

// 全局记录当前文字大小

_font = [self arc4randomFont];

textLabel.font = [UIFont systemFontOfSize:_font];

[self.view addSubview:textLabel];

textLabel.textColor = [self arc4randomColor];

// label高度

CGFloat labelY = [self arc4randomY];

textLabel.frame = CGRectMake(screenW, labelY, [self textLabelWithString:title].width, textFont);

// 从右到左

[UIView animateWithDuration:3 animations:^{

textLabel.frame = CGRectMake(-[self textLabelWithString:title].width, labelY, [self textLabelWithString:title].width, textFont);

}completion:^(BOOL finished) {

[textLabel removeFromSuperview];

}];

}

#pragma mark - 计算文本宽高方法

-(CGSize)textLabelWithString:(NSString *)string

{

return [string boundingRectWithSize:CGSizeMake(MAXFLOAT, textHeight) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:_font]} context:nil].size;

}

#pragma mark - 随机颜色

-(UIColor *)arc4randomColor

{

return [UIColor colorWithRed:arc4random_uniform(256)/255.0 green:arc4random_uniform(256)/255.0 blue:arc4random_uniform(256)/255.0 alpha:1];

}

#pragma mark - 随机高度

-(CGFloat)arc4randomY

{

CGFloat textY = [UIScreen mainScreen].bounds.size.height * 0.5;

return arc4random_uniform(textY);

}

#pragma mark - 随机文字大小

-(CGFloat)arc4randomFont

{

return  arc4random_uniform(8) + 13;

}

@end

     基本弹幕效果实现了,但是应该还有更简单的方法,欢迎大家批评指证。

相关文章

  • 一个简

    一个简单的弹幕效果 说到斗鱼,很多盆友肯定都知道,作为一名斗鱼的忠实用户。对斗鱼...

  • 简简是一个极为简单的人,一个简还不足以表达她的极简生活,得用简简。但简简喜欢别人叫她简,毕竟念简简的时间比简长多了...

  • 一个简影

    非常时期 惦念千里之外的儿子安危 窝居更是无奈之举 驻立在窗前 凝望空旷的天空,稀落的行人 思绪万千 平凡又期待的...

  • 简书,一个不简的平台。

  • 第一份笔记

    简书 简书是一个写作网站。 简书很简洁。

  • 简书测试

    简书,一个纯粹的环境。 简书

  • 简书贵在一个简字

    简书贵在一个简字,简村一切从简,简叔信简,简友好简! 一,简书简明:简叔办简书,目的简明,创作你的创作,接受世界对...

  • 我想用简书贝赚得你的关注

    简书前几天出了一个话题活动是,你用简书贝赚了啥? 之前把简书贝卖了买了一个月的简书会员。 昨天想了想来简书那么久了...

  • 诚善者闲言慧语:来简书你得到了什么?可你又想得到什么呢

    来简书的每一个简友, 每一个简友都怀揣着梦想, 为了各自的梦想,努力而坚持着。 我们也得到了简书给予的一些简书钻,...

  • 不得不做出的改变

    每日更新,我发现自从到了简书,看了很多简友的文章认识了很多简友,一个地方一个习惯和一个地方的章程,在简书我学到好多...

网友评论

      本文标题: 一个简

      本文链接:https://www.haomeiwen.com/subject/xvvhkttx.html