封装雪花下落效果

效果图如下:

代码如下,新建一个View,使他继承UIView,这里面使用的是LzwSnowView;

#import "LzwSnowView.h"

@interface LzwSnowView ()
{
    UIImage *_image;
}
@end

@implementation LzwSnowView

-(instancetype)initWithFrame:(CGRect)frame{

    self = [super initWithFrame:frame];

    if (self) {
        //雪花图片
        _image = [UIImage imageNamed:@"Snow"];
        //循环添加图片
        [NSTimer scheduledTimerWithTimeInterval:.8f target:self selector:@selector(addOneSnowflake) userInfo:nil repeats:YES];
    }
    return self;
}

- (void)addOneSnowflake{

    //雪花图片
    UIImageView *imgV = [[UIImageView alloc]initWithImage:_image];

    //随机生成雪花位置
    int startX = round(random() % 320);
    int endX = round(random() % 320);

    //随机生成雪花的缩放比和速度
    double scale = 1 / round(random() % 100) + 1.0;
    double speed = 1 / round(random() % 100) + 1.0;

    //设置雪花的起始位置
    imgV.frame = CGRectMake(startX, -30, 25.f * scale, 25.f * scale);
    imgV.alpha = .5f;

    //将雪花添加到view上面
    [self addSubview:imgV];
    [self sendSubviewToBack:imgV];

    //动画改变位置
    [UIView animateWithDuration:25 * speed animations:^{
        //曲线
        [UIView setAnimationCurve:UIViewAnimationCurveLinear];
        imgV.frame = CGRectMake(endX, 1000.f, 25.f * scale, 25.f * scale);

    } completion:^(BOOL finished) {
        if (finished) {
            [imgV removeFromSuperview];
        }

    }];

}

@end

在需要添加雪花的控制器中添加LzwSnowView即可,如下:

LzwSnowView *snowV = [[LzwSnowView alloc]initWithFrame:self.view.bounds];
    [self.view addSubview:snowV];
    [self.view sendSubviewToBack:snowV];

OK...

时间: 2024-08-28 01:50:50

封装雪花下落效果的相关文章

【OpenGL】Shader实例分析(七)- 雪花飘落效果

转发请保持地址:http://blog.csdn.net/stalendp/article/details/40624603 研究了一个雪花飘落效果.感觉挺不错的.分享给大家,效果例如以下: 代码例如以下: Shader "shadertoy/Flakes" { // https://www.shadertoy.com/view/4d2Xzc Properties{ iMouse ("Mouse Pos", Vector) = (100,100,0,0) iChan

原生js实现雪花飘落效果

雪花飘落的效果实现步骤:1.使用setInterval定时器每800毫秒创建一个雪花:2.把每一个雪花作为参数传进动态下落的方法中即可. <style> *{padding: 0;margin: 0;} body{ background:#000; width: 100%; height: 100%; overflow:hidden; } </style> <div id="flame"></div> js实现代码: <script

一款js生成的不错的页面上雪花飞舞效果

不错的雪花飞舞效果,雪花飞舞的感觉怎么样?是不是很不一样?这里的雪花可是用JavaScript生成的哦,雪片数目.飘动速度都可以调节,值越大雪花飘落越慢,而且还可以根据浏览器的类型,代码调用的不同,也就是说兼容性做的也很好,保证了在大多数浏览器类型下的正常显示. <html> <head> <title>一款js生成的不错的页面上雪花飞舞效果丨石家庄花卉绿植租摆|石家庄墓地</title> </head> <body> <div

用js实现雪花下落的功能

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8" />    <title>雪花下落</title></head><style>    .box{        height: 600px;        width: 800px;        border: 1px solid red;  

JS 黑客帝国文字下落效果

黑客帝国文字下落效果 源代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>黑客帝国文字下落</title> <style> html, body {margin:0; padding:0; background-color:#000;} #divList {width:800px; height:500px; border

JS制作的可控制风级的雪花飘落效果

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>JS制作的可控制风级的雪花飘落效果|kid

纯代码为网站站点添加雪花飘落效果

<script type="text/javascript"> (function($){ $.fn.snow = function(options){ var $flake = $('<div id="snowbox" />').css({'position': 'absolute','z-index':'9999', 'top': '-50px'}).html('?'), documentHeight = $(document).heig

Android实战简易教程-第六十九枪(自定义控件实现雪花飘落效果)

现在APP要求越来越高了,不只是要求实现功能,颜值的要求也越来越高,下面我们通过自定义控件来实现雪花飘落的效果,可以作为界面背景哦. 1.自定义控件: package com.test.a; import java.util.Random; import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Can

iOS开发——雪花下落

用帧动画实现 -(void)goCome { timer =[NSTimer scheduledTimerWithTimeInterval:0.6 target:self selector:@selector(go) userInfo:nil repeats:YES]; } -(void)go { //动画效果 UIImageView *iv = [[UIImageView alloc]init]; int a = arc4random()%51;//雪花大小随机(0~50) iv.frame