IOS實(shí)現(xiàn)簽到特效(散花效果)的實(shí)例代碼
更新時(shí)間:2018年05月14日 17:33:23 作者:GuiGen_L
這篇文章主要介紹了IOS實(shí)現(xiàn)簽到特效(散花效果)的實(shí)例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
本文講述了IOS實(shí)現(xiàn)簽到特效(散花效果)實(shí)例代碼。分享給大家供大家參考,具體如下:
散花特效
#import <Foundation/Foundation.h> /// 領(lǐng)取獎(jiǎng)勵(lì)成功 @interface RewardSuccess : NSObject /** * 成功動(dòng)畫 */ + (void)show; @end
#import "RewardSuccess.h" #import "RewardSuccessWindow.h" #define EmitterColor_Red [UIColor colorWithRed:255/255.0 green:0 blue:139/255.0 alpha:1] #define EmitterColor_Yellow [UIColor colorWithRed:251/255.0 green:197/255.0 blue:13/255.0 alpha:1] #define EmitterColor_Blue [UIColor colorWithRed:50/255.0 green:170/255.0 blue:207/255.0 alpha:1] @implementation RewardSuccess + (void)show { UIWindow *window = [UIApplication sharedApplication].keyWindow; UIView *backgroundView = [[UIView alloc] initWithFrame:window.bounds]; backgroundView.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.8]; [window addSubview:backgroundView]; RewardSuccessWindow *successWindow = [[RewardSuccessWindow alloc] initWithFrame:CGRectZero]; [backgroundView addSubview:successWindow]; //縮放 successWindow.transform=CGAffineTransformMakeScale(0.01f, 0.01f); successWindow.alpha = 0; [UIView animateWithDuration:0.4 animations:^{ successWindow.transform = CGAffineTransformMakeScale(1.0f, 1.0f); successWindow.alpha = 1; }]; //3s 消失 double delayInSeconds = 3; dispatch_time_t delayInNanoSeconds = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); dispatch_after(delayInNanoSeconds, dispatch_get_main_queue(), ^(void){ [UIView animateWithDuration:0.4 animations:^{ successWindow.transform = CGAffineTransformMakeScale(.3f, .3f); successWindow.alpha = 0; }completion:^(BOOL finished) { [backgroundView removeFromSuperview]; }]; }); //開始粒子效果 CAEmitterLayer *emitterLayer = addEmitterLayer(backgroundView,successWindow); startAnimate(emitterLayer); } CAEmitterLayer *addEmitterLayer(UIView *view,UIView *window) { //色塊粒子 CAEmitterCell *subCell1 = subCell(imageWithColor(EmitterColor_Red)); subCell1.name = @"red"; CAEmitterCell *subCell2 = subCell(imageWithColor(EmitterColor_Yellow)); subCell2.name = @"yellow"; CAEmitterCell *subCell3 = subCell(imageWithColor(EmitterColor_Blue)); subCell3.name = @"blue"; CAEmitterCell *subCell4 = subCell([UIImage imageNamed:@"success_star"]); subCell4.name = @"star"; CAEmitterLayer *emitterLayer = [CAEmitterLayer layer]; emitterLayer.emitterPosition = window.center; emitterLayer.emitterPosition = window.center; emitterLayer.emitterSize = window.bounds.size; emitterLayer.emitterMode = kCAEmitterLayerOutline; emitterLayer.emitterShape = kCAEmitterLayerRectangle; emitterLayer.renderMode = kCAEmitterLayerOldestFirst; emitterLayer.emitterCells = @[subCell1,subCell2,subCell3,subCell4]; [view.layer addSublayer:emitterLayer]; return emitterLayer; } void startAnimate(CAEmitterLayer *emitterLayer) { CABasicAnimation *redBurst = [CABasicAnimation animationWithKeyPath:@"emitterCells.red.birthRate"]; redBurst.fromValue = [NSNumber numberWithFloat:30]; redBurst.toValue = [NSNumber numberWithFloat: 0.0]; redBurst.duration = 0.5; redBurst.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; CABasicAnimation *yellowBurst = [CABasicAnimation animationWithKeyPath:@"emitterCells.yellow.birthRate"]; yellowBurst.fromValue = [NSNumber numberWithFloat:30]; yellowBurst.toValue = [NSNumber numberWithFloat: 0.0]; yellowBurst.duration = 0.5; yellowBurst.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; CABasicAnimation *blueBurst = [CABasicAnimation animationWithKeyPath:@"emitterCells.blue.birthRate"]; blueBurst.fromValue = [NSNumber numberWithFloat:30]; blueBurst.toValue = [NSNumber numberWithFloat: 0.0]; blueBurst.duration = 0.5; blueBurst.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; CABasicAnimation *starBurst = [CABasicAnimation animationWithKeyPath:@"emitterCells.star.birthRate"]; starBurst.fromValue = [NSNumber numberWithFloat:30]; starBurst.toValue = [NSNumber numberWithFloat: 0.0]; starBurst.duration = 0.5; starBurst.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; CAAnimationGroup *group = [CAAnimationGroup animation]; group.animations = @[redBurst,yellowBurst,blueBurst,starBurst]; [emitterLayer addAnimation:group forKey:@"heartsBurst"]; } CAEmitterCell *subCell(UIImage *image) { CAEmitterCell * cell = [CAEmitterCell emitterCell]; cell.name = @"heart"; cell.contents = (__bridge id _Nullable)image.CGImage; // 縮放比例 cell.scale = 0.6; cell.scaleRange = 0.6; // 每秒產(chǎn)生的數(shù)量 // cell.birthRate = 40; cell.lifetime = 20; // 每秒變透明的速度 // snowCell.alphaSpeed = -0.7; // snowCell.redSpeed = 0.1; // 秒速 cell.velocity = 200; cell.velocityRange = 200; cell.yAcceleration = 9.8; cell.xAcceleration = 0; //掉落的角度范圍 cell.emissionRange = M_PI; cell.scaleSpeed = -0.05; //// cell.alphaSpeed = -0.3; cell.spin = 2 * M_PI; cell.spinRange = 2 * M_PI; return cell; } UIImage *imageWithColor(UIColor *color) { CGRect rect = CGRectMake(0, 0, 13, 17); UIGraphicsBeginImageContext(rect.size); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(context, [color CGColor]); CGContextFillRect(context, rect); UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return image; } @end
領(lǐng)取獎(jiǎng)勵(lì)成功提示框
#import <UIKit/UIKit.h> /// 領(lǐng)取獎(jiǎng)勵(lì)成功提示框 @interface RewardSuccessWindow : UIView @end
#import "RewardSuccessWindow.h" static CGFloat SuccessWindow_width = 270; static CGFloat SuccessWindow_hight = 170; @implementation RewardSuccessWindow (instancetype)initWithFrame:(CGRect)frame { CGSize screenSize = [UIScreen mainScreen].bounds.size; self = [super initWithFrame:CGRectMake((screenSize.width - SuccessWindow_width)/2.0 , (screenSize.height - SuccessWindow_hight)/2.0, SuccessWindow_width, SuccessWindow_hight)]; if (self) { [self configSubViews]; } return self; } - (void)configSubViews { self.backgroundColor = [UIColor whiteColor]; self.layer.cornerRadius = 10; self.layer.masksToBounds = YES; UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 45, SuccessWindow_width, 22)]; titleLabel.text = @"恭喜您,領(lǐng)取成功!"; titleLabel.font = [UIFont systemFontOfSize:19.0]; titleLabel.textAlignment = NSTextAlignmentCenter; [self addSubview:titleLabel]; UILabel *expLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 75, SuccessWindow_width, 43)]; expLabel.font = [UIFont systemFontOfSize:15]; expLabel.textAlignment = NSTextAlignmentCenter; [self addSubview:expLabel]; NSString *string = @"獲得經(jīng)驗(yàn):+6"; NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:string]; [attributedString addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:15] range:NSMakeRange(0, string.length)]; [attributedString addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"MarkerFelt-Thin" size:35] range:NSMakeRange(5,2)]; NSShadow *shadow =[[NSShadow alloc] init]; shadow.shadowOffset = CGSizeMake(1, 3); [attributedString addAttribute:NSShadowAttributeName value:shadow range:NSMakeRange(5,2)]; [attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor yellowColor] range:NSMakeRange(5,2)]; expLabel.attributedText = attributedString; UILabel *bottomLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 135, SuccessWindow_width, 22)]; bottomLabel.text = @"可以在我的->我的獎(jiǎng)勵(lì)中查看獲得獎(jiǎng)勵(lì)"; bottomLabel.font = [UIFont systemFontOfSize:13.0]; bottomLabel.textAlignment = NSTextAlignmentCenter; bottomLabel.textColor = [UIColor colorWithRed:177/255.0 green:177/255.0 blue:177/255.0 alpha:1]; [self addSubview:bottomLabel]; } @end
您可能感興趣的文章:
- 使用Jquery實(shí)現(xiàn)每日簽到功能
- 基于jquery實(shí)現(xiàn)日歷簽到功能
- JavaScript動(dòng)態(tài)創(chuàng)建link標(biāo)簽到head里的方法
- php+mysql+jquery實(shí)現(xiàn)日歷簽到功能
- thinkPHP實(shí)現(xiàn)簽到功能的方法
- python3模擬百度登錄并實(shí)現(xiàn)百度貼吧簽到示例分享(百度貼吧自動(dòng)簽到)
- MYSQL實(shí)現(xiàn)連續(xù)簽到功能斷簽一天從頭開始(sql語(yǔ)句)
- Python腳本實(shí)現(xiàn)蝦米網(wǎng)簽到功能
- php實(shí)現(xiàn)簽到功能的方法實(shí)例分析
- 基于文本的訪客簽到簿
相關(guān)文章
iOS實(shí)現(xiàn)點(diǎn)贊動(dòng)畫特效
這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)點(diǎn)贊動(dòng)畫特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-01-01如何通過(guò)Objective-C的枚舉學(xué)習(xí)iOS中位操作.md詳解
這篇文章主要給大家介紹了關(guān)于如何通過(guò)Objective-C的枚舉學(xué)習(xí)iOS中位操作.md的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03使用設(shè)計(jì)模式中的Singleton單例模式來(lái)開發(fā)iOS應(yīng)用程序
這篇文章主要介紹了使用設(shè)計(jì)模式中的Singleton單例模式來(lái)開發(fā)iOS應(yīng)用程序的例子,示例代碼為傳統(tǒng)的Objective-C語(yǔ)言,需要的朋友可以參考下2016-03-03iOS開發(fā)的UI制作中動(dòng)態(tài)和靜態(tài)單元格的基本使用教程
這篇文章主要介紹了iOS開發(fā)的UI制作中動(dòng)態(tài)和靜態(tài)單元格的基本使用教程,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2015-12-12解決Xcode8打包上傳構(gòu)建版本無(wú)效的辦法
這篇文章主要介紹的是自己在打包上傳項(xiàng)目的時(shí)候遇到的一個(gè)問(wèn)題,通過(guò)自己的努力一步步解決了,現(xiàn)將解決方法方法分享給大家,希望給同樣遇到這個(gè)問(wèn)題的朋友們能有所幫助,下面來(lái)一起看看吧。2016-09-09iOS仿抖音視頻加載動(dòng)畫效果的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于iOS視頻加載動(dòng)畫效果的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11