IOS 作业项目(3) 霓虹灯效果
先上效果图
#import "CHViewController.h"
@interface CHViewController ()
{
int i;
int j;
}
@property NSInteger isStart;
@property (nonatomic,retain) NSMutableArray *viewArray;
@property (nonatomic,retain) UIView *neonView;
@property (nonatomic,retain) NSTimer *timer;
@end
static inline CGRect rectWithScale(CGRect rect,CGFloat scale)
{
rect.size.width+=scale;
rect.size.height+=scale;
return rect;
}
@implementation CHViewController
-(UIColor *)getRandomColor:(NSInteger)max add:(NSInteger)num
{
CGFloat r,g,b;
r=arc4random()%max +num;
g=arc4random()%max +num;
b=arc4random()%max +num;
return [UIColor colorWithRed:r/225.0 green:g/225.0 blue:b/225.0 alpha:1.0f];
}
- (void)viewDidLoad
{
i=0;//视图下标
j=0;
_isStart=0;
///////////背景色
UIView *backGround=[[UIView alloc]initWithFrame:self.view.bounds];
backGround.backgroundColor= [self getRandomColor:31 add:95];
[self.view addSubview:backGround];
//////////标题栏视图设置
UIView *titleView=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 20)];
titleView.backgroundColor=[UIColor colorWithRed:33/255.0 green:33/255.0 blue:33/255.0 alpha:0.5];
[backGround addSubview:titleView];
//////////按钮设置
UIButton *button= [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame=CGRectMake(20, backGround.bounds.size.height-130, 280, 40);
[button setTitle:@"Start" forState:UIControlStateNormal];
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
button.backgroundColor=[UIColor whiteColor];
[backGround addSubview:button];
[button addTarget:self action:@selector(onClick:) forControlEvents:UIControlEventTouchUpInside];
///////////////霓虹灯框视图设置
_neonView=[[UIView alloc]initWithFrame:CGRectMake(50, 60, 220, 220)];
_neonView.backgroundColor=[UIColor whiteColor];
[backGround addSubview:_neonView];
//////////////zoom视图入数组
_viewArray=[[NSMutableArray alloc]init];
for (int index=0; index<1000; index++) {
UIView *view=[[UIView alloc]initWithFrame:CGRectMake(0,0,5,5)];
CGPoint point=CGPointMake(CGRectGetMidX(_neonView.bounds), CGRectGetMidY(_neonView.bounds));
view.center=point;
view.bounds=rectWithScale(view.bounds, 4.3f);
view.backgroundColor=[self getRandomColor:256 add:0];
[_viewArray addObject:view];
}
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
-(void)onClick:(UIButton *)button
{
i=0;
if (_isStart==0) {
_timer=[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(showTime:) userInfo:nil repeats:YES];
_isStart=1;
[button setTitle:@"Stop" forState:UIControlStateNormal];
}
else
{
_isStart=0;
[button setTitle:@"Start" forState:UIControlStateNormal];
[_timer invalidate];
}
}
-(void)showTime:(NSTimer *)timer
{
for (j=0; j<i; j++) {
if (((UIView*)_viewArray[j]).bounds.size.height>=CGRectGetHeight(_neonView.bounds)) {
((UIView*)_viewArray[j]).bounds=CGRectMake(0,0,5,5);
((UIView*)_viewArray[j]).center=CGPointMake(CGRectGetMidX(_neonView.bounds), CGRectGetMidY(_neonView.bounds));
[((UIView*)_viewArray[j]) removeFromSuperview];
//[_neonView addSubview:_viewArray[j]];
}
((UIView*)_viewArray[j]).bounds=rectWithScale(((UIView*)_viewArray[j]).bounds, 5.0f);
// ((UIView*)_viewArray[j]).backgroundColor=[self getRandomColor:256 add:0];
if (i<1000)
[_neonView addSubview:_viewArray[j]];
}
if (i<1000) {
i++;
}
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
/* UIView *view= }*/
}
@end
IOS 作业项目(3) 霓虹灯效果的更多相关文章
- IOS 作业项目(4)步步完成 画图 程序(中)
一,承接上文,继续本文 [UIButton buttonWithType:UIButtonTypeRoundedRect]; 如此声明的按钮才会有点击闪动的效果!如果直接frame方式声明就不会有. ...
- IOS 作业项目(2) 画图(保存,撤销,笔粗细设定功能)
先上效果图
- IOS 作业项目(1) 关灯游戏 (百行代码搞定)
1,准备工作,既然要开关灯,就需要确定灯的灯的颜色状态 首先想到的是扩展UIColor
- IOS 作业项目 TableView两个section中cell置顶功能实现
点击cell会置顶,其他的下移
- IOS 作业项目(4)步步完成 画图 程序(问题处理)终结
一,解决换色程序崩溃问题 程序崩溃是因为颜色的内存被释放,添加如下类的内容即可 @implementation TuyaPath - (id)init { self = [super init]; i ...
- IOS 作业项目(4)步步完成 画图 程序(剧终)
// // CHViewController.m // SuperDrawingSample // // Created by JaikenLI on 13-11-21. // Copyrig ...
- IOS 作业项目(4)步步完成 画图 程序(中续)
一,程序布局整理 前言://1,程序启动//2,程序流程框架//3,程序界面一致//4,程序界面功能, //这里只做页面的固定功能, //在首次创建界面时,我们会指定好固定事件触发前的固定方法 //至 ...
- IOS 作业项目(4)步步完成 画图 程序(上)
先上流程图
- GitHub Android 最火开源项目Top20 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上。基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。
1. ActionBarSherlock(推荐) ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便 ...
随机推荐
- Java并发编程:阻塞队列(转载)
Java并发编程:阻塞队列 在前面几篇文章中,我们讨论了同步容器(Hashtable.Vector),也讨论了并发容器(ConcurrentHashMap.CopyOnWriteArrayList), ...
- hdu-----(1507)Uncle Tom's Inherited Land*(二分匹配)
Uncle Tom's Inherited Land* Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- hadoop主节点(NameNode)备份策略以及恢复方法
link:http://jiajun.iteye.com/blog/809125 一.dits和fsimage 首先要提到两个文件edits和fsimage,下面来说说他们是做什么的. 集群中的名称节 ...
- jquery mobile 请求数据方法执行时显示加载中提示框
在jquery mobile开发中,经常需要调用ajax方法,异步获取数据,如果异步获取数据方法由于网速等等的原因,会有一个反应时间,如果能在点击按钮后数据处理期间,给一个正在加载的提示,客户体验会更 ...
- h5 本地存储和读取信息
总结:cookie的缺点很明显,最多只能存储4KB的数据,每个HTTP请求都会被传送回服务器,明文传输(除非你使用SSL)对于购物网站而言,cookie是非常重要的,为了实现购物车功能,把已选物品加入 ...
- Spark(3) - External Data Source
Introduction Spark provides a unified runtime for big data. HDFS, which is Hadoop's filesystem, is t ...
- linux shell 单引号 双引号 反引号的区别
一.单引号和双引号 首先, 单引号和双引号,都是为了解决中间有空格的问题. 因为空格在linux中时作为一个很典型的分隔符,比如 string1=this is a string,这样执行就会报错.为 ...
- Android的SwipeToDismiss第三方开源框架模拟QQ对话列表侧滑删除,置顶,将头像图片圆形化处理。
<Android SwipeToDismiss:左右滑动删除ListView条目Item> Android的SwipeToDismiss是github上一个第三方开源框架(github ...
- 网页优化URI(http URI scheme与data URI scheme)
网页优化的一大首要任务是减少HTTP 请求 (http request) 的次数,例如通过合并多个JS文件,合并CSS样式文件.除此之外,还有一个data URL 的密技,让我们直接把图像的内容崁入网 ...
- iOS 登陆的实现四种方式
iOS 登陆的实现四种方式 一. 网页加载: http://www.cnblogs.com/tekkaman/archive/2013/02/21/2920218.ht ml [iOS登陆的实现] A ...