IOS實(shí)現(xiàn)簽到特效(散花效果)的實(shí)例代碼
本文講述了IOS實(shí)現(xiàn)簽到特效(散花效果)實(shí)例代碼。分享給大家供大家參考,具體如下:


散花特效
#import <Foundation/Foundation.h> /// 領(lǐng)取獎(jiǎng)勵(lì)成功 @interface RewardSuccess : NSObject /** * 成功動(dòng)畫(huà) */ + (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];
}];
});
//開(kāi)始粒子效果
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ù)簽到功能斷簽一天從頭開(kāi)始(sql語(yǔ)句)
- Python腳本實(shí)現(xiàn)蝦米網(wǎng)簽到功能
- php實(shí)現(xiàn)簽到功能的方法實(shí)例分析
- 基于文本的訪客簽到簿
相關(guān)文章
iOS實(shí)現(xiàn)點(diǎn)贊動(dòng)畫(huà)特效
這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)點(diǎn)贊動(dòng)畫(huà)特效,文中示例代碼介紹的非常詳細(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開(kāi)發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
使用設(shè)計(jì)模式中的Singleton單例模式來(lái)開(kāi)發(fā)iOS應(yīng)用程序
這篇文章主要介紹了使用設(shè)計(jì)模式中的Singleton單例模式來(lái)開(kāi)發(fā)iOS應(yīng)用程序的例子,示例代碼為傳統(tǒng)的Objective-C語(yǔ)言,需要的朋友可以參考下2016-03-03
iOS開(kāi)發(fā)之銀行卡號(hào)識(shí)別
本文給大家分享ios開(kāi)發(fā)之銀行卡號(hào)識(shí)別功能,思路明確,需要的朋友參考下吧2016-12-12
iOS開(kāi)發(fā)的UI制作中動(dòng)態(tài)和靜態(tài)單元格的基本使用教程
這篇文章主要介紹了iOS開(kāi)發(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-09
iOS仿抖音視頻加載動(dòng)畫(huà)效果的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于iOS視頻加載動(dòng)畫(huà)效果的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11

