[Objective-C开发]|iOS 雪花动画与跑马灯
这篇是接着上一篇, 关于动画效果的收集篇, 这篇介绍了跑马灯动画以及下落雪花动画, 请看, 话说最近怎么不在状态呢, 好伤感(囧~).
上一篇 - iOS 仿YY直播心形动画 & 烟花动画
跑马灯效果演示 这里贴出使用代码, 详细请下载Demo查看
下载即用~ 快餐 - -Star鼓励
下载后, 在VC中这样使用, 当然Demo中也有体现
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
self.view.backgroundColor = [UIColor blackColor];
XTScrollLabelView *drawMarqueeView= [[XTScrollLabelView alloc] initWithFrame:CGRectMake(0, 0, 250.f, 20)];
drawMarqueeView.delegate= self;
drawMarqueeView.marqueeDirection= FromLeftType;
drawMarqueeView.center= self.view.center;
[self.view addSubview:drawMarqueeView];
[drawMarqueeView addContentView:[self createLabelWithText:@"夏天是个很好的季节, 而夏天然后是简书的推荐作者, 喜欢分享!"
textColor:[self randomColor]]];
[drawMarqueeView startAnimation];
}- (UILabel *)createLabelWithText:(NSString *)text textColor:(UIColor *)textColor {NSString *string = [NSString stringWithFormat:@" %@ ", text];
CGFloat width = [string widthWithStringAttribute:@{NSFontAttributeName : [UIFont systemFontOfSize:14.f]}];
UILabel*label= [[UILabel alloc] initWithFrame:CGRectMake(0, 0, width, 20)];
label.font= [UIFont systemFontOfSize:14.f];
label.text= string;
label.textColor= textColor;
return label;
}
- (UIColor *)randomColor {return [UIColor colorWithRed:[self randomValue] green:[self randomValue] blue:[self randomValue] alpha:1];
}
- (CGFloat)randomValue {return arc4random() % 256 / 255.f;
}
- (void)drawMarqueeView:(XTScrollLabelView *)drawMarqueeView animationDidStopFinished:(BOOL)finished
{
[drawMarqueeView stopAnimation];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[drawMarqueeView addContentView:[self createLabelWithText:[self randomString]
textColor:[self randomColor]]];
[drawMarqueeView startAnimation];
});
}
- (NSString *)randomString {NSArray *array = @[@"人帅",
@"勤劳",
@"年轻",
@"刻苦",
@"开玩笑",
@"都是我编的, 前面的别跑"];
return array[arc4random() % array.count];
}
![演示](http://upload-images.jianshu.io/upload_images/1506501-60f6dae4324b1ba1.gif?imageMogr2/auto-orient/strip) 雪花动画代码演示 – 在ViewDidLoad中这样写, 注释已经很详细
// 创建粒子Layer
CAEmitterLayer *snowEmitter = [CAEmitterLayer layer];
// 粒子发射位置
snowEmitter.emitterPosition = CGPointMake(120,0);
// 发射源的尺寸大小
snowEmitter.emitterSize= self.view.bounds.size;
// 发射模式
snowEmitter.emitterMode= kCAEmitterLayerSurface;
// 发射源的形状
snowEmitter.emitterShape= kCAEmitterLayerLine;
// 创建雪花类型的粒子
CAEmitterCell *snowflake= [CAEmitterCell emitterCell];
// 粒子的名字
snowflake.name = @"snow";
// 粒子参数的速度乘数因子
snowflake.birthRate = 20.0;
snowflake.lifetime= 120.0;
// 粒子速度
snowflake.velocity= 10.0;
// 粒子的速度范围
snowflake.velocityRange = 10;
// 粒子y方向的加速度分量
snowflake.yAcceleration = 2;
// 周围发射角度
snowflake.emissionRange = 0.5 * M_PI;
// 子旋转角度范围
snowflake.spinRange = 0.25 * M_PI;
snowflake.contents= (id)[[UIImage imageNamed:@"snow"] CGImage];
// 设置雪花形状的粒子的颜色
snowflake.color= [[UIColor whiteColor] CGColor];
snowflake.redRange= 1.5f;
snowflake.greenRange = 2.2f;
snowflake.blueRange= 2.2f;
snowflake.scaleRange = 0.6f;
snowflake.scale= 0.7f;
snowEmitter.shadowOpacity = 1.0;
snowEmitter.shadowRadius= 0.0;
snowEmitter.shadowOffset= CGSizeMake(0.0, 0.0);
// 粒子边缘的颜色
snowEmitter.shadowColor= [[UIColor whiteColor] CGColor];
// 添加粒子
snowEmitter.emitterCells = @[snowflake];
// 将粒子Layer添加进图层中
[self.view.layer addSublayer:snowEmitter];
// 形成遮罩
UIImage *image= [UIImage imageNamed:@"alpha"];
_layer= [CALayer layer];
_layer.frame= (CGRect){CGPointZero, self.view.bounds.size};
_layer.contents= (__bridge id)(image.CGImage);
_layer.position= self.view.center;
snowEmitter.mask= _layer;
文章图片
————————————— 【[Objective-C开发]|iOS 雪花动画与跑马灯】走心文章, 值得点赞 —文/夏天然后
微博-点我@夏天是个大人了 || QQQ: 498143780
推荐阅读
- EffectiveObjective-C2.0|EffectiveObjective-C2.0 笔记 - 第二部分
- 深入理解Go之generate
- 2020-04-07vue中Axios的封装和API接口的管理
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- iOS中的Block
- 记录iOS生成分享图片的一些问题,根据UIView生成固定尺寸的分享图片
- 2019-08-29|2019-08-29 iOS13适配那点事
- Hacking|Hacking with iOS: SwiftUI Edition - SnowSeeker 项目(一)
- iOS面试题--基础
- 我的软件测试开发工程师书单