IOS 播放雪花的两种方式(代码方式)

Unity透明视频播放全攻略:从AVPro Video配置到Shader实战 在游戏开发与交互式内容创作中,视频播放是常见的多媒体集成需求。其原理涉及视频文件的解码与纹理渲染,通过GPU将图像序列呈现在屏幕上。这项技术的核心价值在于能够丰富视觉表现力,常用于UI动效、场景融合与特效展示等场景。然而,当需要处理带Alpha通道的透明视频时,技术复杂度显著提升,这涉及到对特定编码格式(如ProRes 4444)的支持、高性能解码插件的选型,以及与渲染管线的深度适配。本文聚焦于Unity引擎,深入探讨如何利用AVPro Video这一工业级插件,并结合自定义Shader材质,解决透明视频播 阅读详情

IOS 播放雪花的两种方式(代码方式)

代码:


====================> .h 文件

//

//  WWCShowSnowViewController.h

//  TestCAOrUIViewAnimationApp7-30

//

//  Created by Whitney.c on 15/7/30.

//  Copyright (c) 2015年 ZhongShan Sun union Medical Technology Co. Ltd. All rights reserved.

//


#import <UIKit/UIKit.h>


@interface WWCShowSnowViewController : UIViewController

{

    

    UIImage *imageSnow; // 雪花图片

    

    NSMutableArray *arrayImages; // 装载雪花的集合

    

    NSTimer *timer; // timer 控制反复播放及播放速度

    

}

@end



====================> .m 文件


//

//  WWCShowSnowViewController.m

//  TestCAOrUIViewAnimationApp7-30

//

//  Created by Whitney.c on 15/7/30.

//  Copyright (c) 2015年 ZhongShan Sun union Medical Technology Co. Ltd. All rights reserved.

//


#import "WWCShowSnowViewController.h"


@interface WWCShowSnowViewController ()


@end


@implementation WWCShowSnowViewController



static int index_tag = 0;


- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view.

    self.view.backgroundColor = [UIColor blackColor];

    // 思路

    // 1.准备雪花图片

    // 2.准备装载雪花的集合

    // 3.集合中装载UIImageView(雪花),设置好透明度,X(随机),Y固定在屏幕上放即可,W/H 随机生成

    // 4.结束动画,加入一个新的雪花(只改变X)-》防止动画看起来重复

    

    // 分别加入了2种方式, 代码粗糙,希望能有帮助

    

    [self loadSelfLayoutSubViews];

    

    

    

}


-(void)loadSelfLayoutSubViews

{

    

    

    imageSnow = [UIImage imageNamed:@"snow"];

    

    arrayImages = [[NSMutableArray alloc] initWithCapacity:10];

    

    float screenWidth = [[UIScreen mainScreen] bounds].size.width;

    

    for (int i = 0; i < 20; i++) {

        // 随机生成的x

        

        float x = arc4random()%(int)screenWidth;

        float w = (arc4random()%20)+ 10 ;

        float y = -30;

        NSLog(@"x:%f,y:%f,w:%f",x,y,w);

        UIImageView *iv = [[UIImageView alloc] initWithFrame:CGRectMake(x, y, w, w)];

        iv.image = imageSnow;

        iv.alpha = ((float)(arc4random()%10))/10;

        iv.tag = i ;

        iv.backgroundColor = [UIColor clearColor];

        [self.view addSubview:iv];

        

        [arrayImages addObject:iv];

        

    }

    

    // 设定timer 轮播动画

    

    timer = [NSTimer scheduledTimerWithTimeInterval:0.3 target:self selector:@selector(startBeginAnimation:) userInfo:nil repeats:YES];

}



#pragma mark - 动画开始前的准备

-(void)startBeginAnimation:(id)sender

{

    

    NSLog(@" start begin Animation .....");

    

    index_tag = index_tag + 1;

    

    if ( arrayImages && arrayImages.count >0) {

        UIImageView *imgv = [arrayImages objectAtIndex:0];

        imgv.tag = index_tag ;

        [arrayImages removeObjectAtIndex:0];

        

        // 开始动画

        [self animationStart1:imgv];

    }

    

}



#pragma mark - 开始动画1

-(void)animationStart1:(UIImageView*)imgv

{

    

    [UIView animateWithDuration:6 animations:^{

        

        CGRect frame = imgv.frame;

        frame.origin.y = [[UIScreen mainScreen] bounds].size.height;

        imgv.frame = frame;

        

    }completion:^(BOOL finished){

        

        CGRect frame = imgv.frame;

        frame.origin.x = arc4random()%(int)([[UIScreen mainScreen] bounds].size.width);

        frame.origin.y = -30;

        imgv.frame = frame;

        

        [arrayImages addObject:imgv];

    }];

}



#pragma mark - 开始动画2

-(void)animationStart2:(UIImageView*)imgv

{

    [UIView beginAnimations:[NSString stringWithFormat:@"%d",imgv.tag] context:nil];

    [UIView setAnimationDuration:6]; // 动画时间

    [UIView setAnimationDelegate:self]; // 动画代理

    // 要调整的Frame(原始的Frame到次Frame的过度动画)

    CGRect frame  = imgv.frame;

    imgv.frame = CGRectMake(frame.origin.x, [[UIScreen mainScreen] bounds].size.height, frame.size.width, frame.size.height);

    [UIView commitAnimations];// 提交动画

    

}


#pragma mark - 动画2代理实现-> 当动画停止时


- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)contex

{

    NSLog(@"did stop 2");

    UIImageView *imageView = (UIImageView *)[self.view viewWithTag:[animationID integerValue]];

    

    float x = arc4random()%(int)([[UIScreen mainScreen] bounds].size.width);

    float w = (arc4random()%20)+ 10 ;

    float y = -30;

    

    imageView.frame = CGRectMake(x, y, w, w);

    [arrayImages addObject:imageView];

}


- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


/*

#pragma mark - Navigation


// In a storyboard-based application, you will often want to do a little preparation before navigation

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    // Get the new view controller using [segue destinationViewController].

    // Pass the selected object to the new view controller.

}

*/


@end



// 附图




雪花:Swift中的:snowflake_selector:SVG 雪花 :red_heart_selector: 支持我的应用 :red_heart_selector: :red_heart_selector: :red_heart_selector: :smiling_face_with_halo: :smiling_face_with_heart-eyes: :sign_of_the_horns: :red_heart_selector: :red_heart_selector: 描述 Swift中的SVG 使用来自XML解析器 用法 文件 使用SVG Data创建Document guard let path = Bundle. main . path ( forResource : " xmas " , ofType : " svg " ), let data = try ? Data ( contentsOf : URL ( fileURLWithPath : path)), let document = Snowflake. Document ( data : da 立即下载

相关推荐

swift-HHSnowAnimationView雪花飘落效果下雪动画

雪花效果最主要的思路就是在于循环产生带雪花图片的imageView, 产生的雪花的imageview的 x、y、宽、下落的速度都是随机的,这个可以用随机数来产生数据。

iOS 帧动画运用之雪花动画

1.viewDidLoad - (void)viewDidLoad { [super viewDidLoad]; CADisplayLink *link = [CADisplayLink displayLinkWithTarget:self selector:@selector(makeSnow)]; [link addToRunLoop:[NSRunLoop mainR

omgd的学习笔记 723

ios CAEmitterLayer 的 雪花,烟花,火焰,爱心效果

ios CAEmitterLayer 的 雪花,烟花,火焰,爱心效果

php怎么让页面下雪花,javascript,html_实现雪花效果,现在做的是天上下“心”,怎么控制“心”不重叠?急!,javascript,html,html5 - phpStudy...

实现雪花效果,现在做的是天上下“心”,怎么控制“心”不重叠?急!**直接上代码,输入‘我想你’我会显示弹出下“心”的效果,并且优化一下代码。求大神帮忙看下,怎么才能把“心”不重叠?**html结构:Documentbody{background: #000;overflow: hidden;}$(document).ready(function() {$("#txt").on("input",fu...

weixin_35822534的博客 130

iOS图片播放帧动画

解决了图片占用内存过大问题,每次都是只加载一张图片在内存。

IOSdrawRect实现雪花飘落效果

本文实例为大家分享了IOSdrawRect实现雪花飘落效果的具体代码,供大家参考,具体内容如下 绘制原理: 雪花效果最主要的思路就是在于循环产生带雪花图片的imageView, 产生的雪花的imageview的 x、y、宽、下落的速度都是随机的,这个可以用随机数来产生数据。 实现代码: #import @interface HHFSnowflakeFallingView : UIView /** * 快速创建一个雪花飘落效果的view * * @param bgImageName 背景图片的名称 * @param snowImageName 雪花

音视频处理入门:用FFmpeg播放YUV文件的正确姿势

本文详细介绍了如何使用FFmpeg播放YUV原始视频文件。针对YUV文件无封装格式的特点,重点讲解了ffplay命令中分辨率、像素格式等关键参数的正确设置方法,并提供了常见YUV格式(如yuv420p、nv12)的对比与选择指南,帮助开发者快速掌握音视频处理的基础技能。

egg99的博客 483

iOS 雪花动画

通过核心动画实现雪花的动画效果,十分的流畅

精通iOS动态壁纸:从零开始打造个性化手机界面

你知道吗?你的iPhone其实隐藏着惊人的动态壁纸制作能力!今天我们要介绍的Nugget工具,就是开启这扇大门的钥匙。这个强大的开源项目能够解锁设备的全部潜力,让你轻松创建专属的动态壁纸效果。 ## 为什么选择Nugget来制作动态壁纸? 在开始实际操作之前,我们先来了解Nugget的独特优势。它不仅仅是一个简单的壁纸工具,更是一个完整的个性化定制平台。通过PosterBoard功能,你可以实

gitblog_00461的博客 410

logisim实验六:MIPS运算器设计

实验目的 学生理解算术逻辑运算单元(ALU)的基本构成,掌握 Logisim 中各种运算组件的使用方法,熟悉多路选择器的使用,能利用前述实验完成的 32 位加法器、 Logisim 中的运算组件构造指定规格的 ALU 单元。 设计要求 利用前面实验封装好的 32 位加法器以及 logisim 平台中现有运算部件构建一个 32 位算术逻辑运算单元(禁用 Logisim 系统自带的加法器,减法器),可支持算术加、减、乘、除,逻辑与、或、非、异或运算、逻辑左移、逻辑右移、算术右移运算,支持常用程序状态标志(有符号

gyp0205的博客 2万+

【AI+教育】别再让 Cursor 只当编辑器了!4 步解锁 Claude 官方技能!

本文介绍了在Windows环境下通过OpenSkills工具在Cursor中调用Claude AI技能的方法。主要内容包括:1)安装Node.js环境;2)全局安装OpenSkills工具;3)安装Claude官方技能库;4)通过AGENTS.md文件同步技能;5)在Cursor中直接调用技能完成Excel、PPT等任务。文章提供了详细的操作步骤和示例,帮助用户快速上手使用AI技能提升工作效率。

奶爸的编程之路,也就一周冷个三天 753

iOS游戏粒子特效开发:Cocos2d-x原理、性能优化与实战指南

粒子系统是计算机图形学中模拟自然现象和视觉特效的核心技术,其原理是通过大量简单图形(粒子)的规则运动来构建复杂视觉效果。在游戏开发领域,粒子系统是实现技能特效、环境氛围和UI反馈的关键组件,直接影响游戏的沉浸感和表现力。从技术实现角度看,粒子系统涉及发射、更新、剔除和渲染四个核心流程,其性能优化与渲染架构紧密相关。在移动平台特别是iOS设备上,由于GPU架构(如Tile-Based Deferred Rendering)和硬件性能的限制,粒子特效的开发需要特别关注过度绘制(Overdraw)和Draw Ca

weixin_34378969的博客 312

LabVIEW小白福音:手把手教你用NI采集卡搭建振动信号采集系统(附源码和避坑指南)

本文为LabVIEW初学者提供详细的NI采集卡振动信号采集系统搭建指南,涵盖硬件连接、驱动安装、信号处理及性能优化等关键步骤。特别针对振动信号采集系统中的常见问题提供解决方案,并附源码和避坑指南,帮助用户快速上手并避免常见错误。

weixin_30485379的博客 103

Badge Magic动画效果全解析:从基础文字到复杂图形的魔法转换

Badge Magic是一款功能强大的LED徽章动画制作工具,支持移动和桌面多平台,让你轻松创建从简单文字到复杂图形的动态效果。无论是制作个性化徽章、活动标识还是创意展示,Badge Magic都能满足你的需求,通过简单操作实现专业级动画效果。 ## 快速入门:Badge Magic界面与基础操作 Badge Magic采用直观的用户界面设计,让新手也能快速上手。主界面分为三个核心区域:预览区

gitblog_00413的博客 496

vscode+keil嵌入式软件开发全流程

vscode+keil嵌入式软件开发全流程

AspringQ的博客 6785

OpenMythos深度解析

本文深入解析了kyegomez/OpenMythos项目如何从第一性原理重建Claude Mythos的核心架构。该项目并非直接复制Claude,而是基于公开论文和实验结果推测其可能的设计理念,构建了包含多模态注意力、深度推理引擎、知识检索模块等六大核心组件的模块化架构。重点剖析了分组查询注意力(GQA)的实现细节,展示了KV头扩展等关键技术。该项目已成为大模型开源社区最受关注的研究之一,为理解Claude的架构思想提供了有价值的参考。

Crown_22的博客 518

iphone开发笔记2

1.截取屏幕图片 //创建一个基于位图的图形上下文并指定大小为CGSizeMake(200,400) UIGraphicsBeginImageContext(CGSizeMake(200,400)); //renderInContext 呈现接受者及其子范围到指定的上下文 [self.view.layerrenderInContext:UIGraphicsGetCurrentConte

Matthew_Chen1008的专栏 478

Python爬虫实战:利用最新技术爬取微信公众号文章(基于搜狗搜索)

使用最新Python版本确保兼容性和性能:比传统Requests更强大的HTML解析库Playwright:新一代浏览器自动化工具,比Selenium更高效Asyncio:异步IO框架提升爬虫效率Redis:分布式任务队列和去重MongoDB:非关系型数据库存储结构化数据本文详细介绍了如何利用Python最新技术栈构建一个功能强大的微信公众号文章爬虫。通过结合Playwright浏览器自动化、异步IO、分布式任务队列等技术,我们实现了一个能够绕过反爬机制、高效稳定抓取数据的解决方案。

2201_76125261的博客 1796

html网页制作代码大全表白 html表白代码大全可复制,浪漫的html表白特效网页制作源代码

📒网站文件方面:html网页结构文件、css网页样式文件、js网页特效文件、images网页图片文件;📙网页编辑方面等任意html编辑软件进行运行及修改编辑等操作)。其中:(1)📜html文件包含:其中index.html是首页、其他html为二级页面;(2)📑 css文件包含:css全部页面样式,3D动态效果,雪花飘落等等(3)📄 js文件包含:页面炫酷效果实现。

STU网页设计 2963

2 中望CAD二次开发-绘制图形(ZRX C++)

本文讲解中望CAD二次开发,关于块的概念及基本图形的绘制

cilvsuanna的博客 411

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【七夕表白网站】程序员表白网页合集(100套) HTML+CSS+JS

📒网站文件方面:html网页结构文件、css网页样式文件、js网页特效文件、images网页图片文件;📙网页编辑方面等任意html编辑软件进行运行及修改编辑等操作)。其中:(1)📜html文件包含:其中index.html是首页、其他html为二级页面;(2)📑 css文件包含:css全部页面样式,3D动态效果,雪花飘落等等(3)📄 js文件包含:页面炫酷效果实现。

HTML网页设计 专注大学生网页设计 174

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

程序员专属情人节表白网站(html+css+js邀请函网站制作)

📒网站文件方面:html网页结构文件、css网页样式文件、js网页特效文件、images网页图片文件;📙网页编辑方面:可使用任意HTML编辑软件(如: 等任意html编辑软件进行运行及修改编辑等操作)。 其中: (1)📜html文件包含:其中index.html是首页、其他html为二级页面; (2)📑 css文件包含:css全部页面样式,3D动态效果,雪花飘落等等 (3)📄 js文件包含:页面炫酷效果实现95-婚礼庆典-邀请函 🏠CSS样式代码 五、🎁更多源码 1.如果我的博客对你有帮

七夕情人节表白网页代码100款 HTML5网页设计与制作1120款 Echarts大屏数据150款 692

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

鸿蒙组件库实战指南:从UI到安全,十大类别与三种集成方式详解

在软件开发中,组件库是提升开发效率、保证代码质量的核心基础设施。其原理在于将通用功能模块化、标准化封装,开发者通过复用这些经过优化的“轮子”,能显著降低编码复杂度、减少错误,并提升应用性能。从技术价值看,成熟的组件库不仅加速了产品迭代,更通过内置的最佳实践(如内存管理、网络优化、安全规范)保障了软件的稳定与安全。在移动开发、物联网等应用场景中,面对多设备适配与高性能要求,组件库的作用尤为关键。以鸿蒙生态为例,其组件库覆盖UI、动画、网络、安全等十大类别,并通过Har包、源码、Maven仓三种方式灵活集成,帮

weixin_32660831的博客 397

制作一个简单七夕情人节表白网页(HTML+CSS)

📒网站文件方面:html网页结构文件、css网页样式文件、js网页特效文件、images网页图片文件;📙网页编辑方面:可使用任意HTML编辑软件(如: 等任意html编辑软件进行运行及修改编辑等操作)。 其中: (1)📜html文件包含:其中index.html是首页、其他html为二级页面; (2)📑 css文件包含:css全部页面样式,3D动态效果,雪花飘落等等 (3)📄 js文件包含:页面炫酷效果实现专属程序员的浪漫520情人节送女朋友的生日祝福樱花雨3D相册 🏠CSS样式代码 五、

网页设计与制作 | HTML+CSS+JS 186
上一篇: IOS 读取本地plist类型文件数据
下一篇: CAKeyframeAnimation 详解
dev-kevin
博客等级 码龄16年 3粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值