多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > IOS 屏保動畫

IOS 屏保動畫

來源:程序員人生   發布時間:2015-05-20 11:19:01 閱讀次數:4568次

前言


     最近公司沒項目,我們碼農處于“農閑”的時期,主管說要我找個動畫渲染的引擎,找了好久都沒找適合的,因而就自己動手寫了個自我感覺比較酷炫的屏保效果。

1、控制界面,這個界面沒甚么技術含量,主要作用是用來控制動畫到底有多炫的,比如動畫色采的豐富度和動畫速度的。溫馨提示,依照提示填入相應的數字,我沒有做越界的處理,你要是crash了請不要找我。

- (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor whiteColor]; self.title = @"設置參數"; UILabel *labelColor = [[UILabel alloc] initWithFrame:CGRectMake(0, 64, self.view.frame.size.width, 30)]; labelColor.text = @" 設置色彩豐富度"; labelColor.backgroundColor = [UIColor groupTableViewBackgroundColor]; [self.view addSubview:labelColor]; //設置R值的范圍 UIView *viewR = [[UIView alloc] initWithFrame:CGRectMake(10, CGRectGetMaxY(labelColor.frame)+10, self.view.frame.size.width⑵0, 70)]; viewR.layer.borderColor = [UIColor groupTableViewBackgroundColor].CGColor; viewR.layer.borderWidth = 1.0; viewR.layer.cornerRadius = 2.0; [self.view addSubview:viewR]; UILabel *title = [[UILabel alloc] initWithFrame:CGRectMake(5, 5, 200, 20)]; title.text = @"請設置R值的范圍(0⑵55)"; title.textColor = [UIColor grayColor]; title.font = [UIFont systemFontOfSize:15.0]; [viewR addSubview:title]; UILabel *min = [[UILabel alloc] initWithFrame:CGRectMake(20, CGRectGetMaxY(title.frame)+10, 70, 25)]; min.text = @"最小值:"; min.textColor = [UIColor grayColor]; min.font = [UIFont systemFontOfSize:17.0]; [viewR addSubview:min]; textFieldMinR = [[UITextField alloc] initWithFrame:CGRectMake(CGRectGetMaxX(min.frame), CGRectGetMinY(min.frame), 50, 25)]; textFieldMinR.layer.borderWidth = 1.0f; textFieldMinR.layer.borderColor = [UIColor grayColor].CGColor; textFieldMinR.layer.cornerRadius = 2.0; textFieldMinR.textAlignment = NSTextAlignmentCenter; [viewR addSubview:textFieldMinR]; UILabel *max = [[UILabel alloc] initWithFrame:CGRectMake(CGRectGetMaxX(textFieldMinR.frame)+50, CGRectGetMaxY(title.frame)+10, 70, 25)]; max.text = @"最大值:"; max.textColor = [UIColor grayColor]; max.font = [UIFont systemFontOfSize:17.0]; [viewR addSubview:max]; textFieldMaxR = [[UITextField alloc] initWithFrame:CGRectMake(CGRectGetMaxX(max.frame), CGRectGetMinY(min.frame), 50, 25)]; textFieldMaxR.layer.borderWidth = 1.0f; textFieldMaxR.layer.borderColor = [UIColor grayColor].CGColor; textFieldMaxR.layer.cornerRadius = 2.0; textFieldMaxR.textAlignment = NSTextAlignmentCenter; [viewR addSubview:textFieldMaxR]; //設置G值的范圍 UIView *viewG = [[UIView alloc] initWithFrame:CGRectMake(10, CGRectGetMaxY(viewR.frame)+10, self.view.frame.size.width⑵0, 70)]; viewG.layer.borderColor = [UIColor groupTableViewBackgroundColor].CGColor; viewG.layer.borderWidth = 1.0; viewG.layer.cornerRadius = 2.0; [self.view addSubview:viewG]; UILabel *titleG = [[UILabel alloc] initWithFrame:CGRectMake(5, 5, 200, 20)]; titleG.text = @"請設置G值的范圍(0⑵55)"; titleG.textColor = [UIColor grayColor]; titleG.font = [UIFont systemFontOfSize:15.0]; [viewG addSubview:titleG]; UILabel *minG = [[UILabel alloc] initWithFrame:CGRectMake(20, CGRectGetMaxY(titleG.frame)+10, 70, 25)]; minG.text = @"最小值:"; minG.textColor = [UIColor grayColor]; minG.font = [UIFont systemFontOfSize:17.0]; [viewG addSubview:minG]; textFieldMinG = [[UITextField alloc] initWithFrame:CGRectMake(CGRectGetMaxX(minG.frame), CGRectGetMinY(minG.frame), 50, 25)]; textFieldMinG.layer.borderWidth = 1.0f; textFieldMinG.layer.borderColor = [UIColor grayColor].CGColor; textFieldMinG.layer.cornerRadius = 2.0; textFieldMinG.textAlignment = NSTextAlignmentCenter; [viewG addSubview:textFieldMinG]; UILabel *maxG = [[UILabel alloc] initWithFrame:CGRectMake(CGRectGetMaxX(textFieldMinG.frame)+50, CGRectGetMaxY(titleG.frame)+10, 70, 25)]; maxG.text = @"最大值:"; maxG.textColor = [UIColor grayColor]; maxG.font = [UIFont systemFontOfSize:17.0]; [viewG addSubview:maxG]; textFieldMaxG = [[UITextField alloc] initWithFrame:CGRectMake(CGRectGetMaxX(maxG.frame), CGRectGetMinY(minG.frame), 50, 25)]; textFieldMaxG.layer.borderWidth = 1.0f; textFieldMaxG.layer.borderColor = [UIColor grayColor].CGColor; textFieldMaxG.layer.cornerRadius = 2.0; textFieldMaxG.textAlignment = NSTextAlignmentCenter; [viewG addSubview:textFieldMaxG]; //設置B值的范圍 UIView *viewB = [[UIView alloc] initWithFrame:CGRectMake(10, CGRectGetMaxY(viewG.frame)+10, self.view.frame.size.width⑵0, 70)]; viewB.layer.borderColor = [UIColor groupTableViewBackgroundColor].CGColor; viewB.layer.borderWidth = 1.0; viewB.layer.cornerRadius = 2.0; [self.view addSubview:viewB]; UILabel *titleB = [[UILabel alloc] initWithFrame:CGRectMake(5, 5, 200, 20)]; titleB.text = @"請設置B值的范圍(0⑵55)"; titleB.textColor = [UIColor grayColor]; titleB.font = [UIFont systemFontOfSize:15.0]; [viewB addSubview:titleB]; UILabel *minB = [[UILabel alloc] initWithFrame:CGRectMake(20, CGRectGetMaxY(titleB.frame)+10, 70, 25)]; minB.text = @"最小值:"; minB.textColor = [UIColor grayColor]; minB.font = [UIFont systemFontOfSize:17.0]; [viewB addSubview:minB]; textFieldMinB = [[UITextField alloc] initWithFrame:CGRectMake(CGRectGetMaxX(minB.frame), CGRectGetMinY(minB.frame), 50, 25)]; textFieldMinB.layer.borderWidth = 1.0f; textFieldMinB.layer.borderColor = [UIColor grayColor].CGColor; textFieldMinB.layer.cornerRadius = 2.0; textFieldMinB.textAlignment = NSTextAlignmentCenter; [viewB addSubview:textFieldMinB]; UILabel *maxB = [[UILabel alloc] initWithFrame:CGRectMake(CGRectGetMaxX(textFieldMinB.frame)+50, CGRectGetMaxY(titleB.frame)+10, 70, 25)]; maxB.text = @"最大值:"; maxB.textColor = [UIColor grayColor]; maxB.font = [UIFont systemFontOfSize:17.0]; [viewB addSubview:maxB]; textFieldMaxB = [[UITextField alloc] initWithFrame:CGRectMake(CGRectGetMaxX(maxB.frame), CGRectGetMinY(minB.frame), 50, 25)]; textFieldMaxB.layer.borderWidth = 1.0f; textFieldMaxB.layer.borderColor = [UIColor grayColor].<pre name="code" class="objc">#import "AnimationView.h" @interface AnimationView () @end @implementation AnimationView @synthesize minR,minG,minB; @synthesize maxR,maxG,maxB; @synthesize suduzhi; - (void)viewDidLoad { [super viewDidLoad]; i = 0; j = 0; timeNum = 1; self.view.backgroundColor = [UIColor blackColor]; timer = [NSTimer scheduledTimerWithTimeInterval:[suduzhi floatValue] target:self selector:@selector(drawCirle) userInfo:nil repeats:YES]; } - (void)drawCirle { timeNum = timeNum +1; CALayer *waveLayer=[CALayer layer]; if (timeNum < 100) { waveLayer.frame = CGRectMake(self.view.center.x, self.view.center.y, 10, 10); } else if (timeNum >100 && timeNum <170){ waveLayer.frame = CGRectMake(i, i*2, 10, 10); i = i +5; } else if (timeNum >170 && timeNum <240){ waveLayer.frame = CGRectMake(self.view.frame.size.width-j, j*2, 10, 10); j = j +5; } else if (timeNum >240 && timeNum < 400) { int x = (arc4random()%300)+20; int y = (arc4random()%500)+20; waveLayer.frame = CGRectMake(x, y, 10, 10); } else if (timeNum>400) { [timer invalidate];//停止計時器 } //設置色彩 int rMin = (int)[minR integerValue]; int rMax = (int)[maxR integerValue]; int gMin = (int)[minG integerValue]; int gMax = (int)[maxG integerValue]; int bMin = (int)[minB integerValue]; int bMax = (int)[maxB integerValue]; int redNum = (arc4random()%rMax) + rMin; int greenNum = (arc4random()%gMax) + gMin; int blueNum = (arc4random()%bMax) + bMin; NSLog(@"%d %d %d",redNum,greenNum,blueNum); UIColor *color = [UIColor colorWithRed:redNum/255.0 green:greenNum/255.0 blue:blueNum/255.0 alpha:1.0]; waveLayer.borderColor = color.CGColor; waveLayer.borderWidth =0.5; waveLayer.cornerRadius =5.0; [self.view.layer addSublayer:waveLayer]; [self scaleBegin:waveLayer]; } -(void)scaleBegin:(CALayer *)aLayer { float maxScale; if (timeNum < 50) { maxScale = 50.0; }else { maxScale = 20.0; } if (aLayer.transform.m11<maxScale) { if (aLayer.transform.m11==1.0) { [aLayer setTransform:CATransform3DMakeScale( 1.1, 1.1, 1.0)]; }else{ [aLayer setTransform:CATransform3DScale(aLayer.transform, 1.1, 1.1, 1.0)]; } [self performSelector:_cmd withObject:aLayer afterDelay:0.05]; }else [aLayer removeFromSuperlayer]; } @end



2、動畫實現界面,這個界面才是干貨。
#import "AnimationView.h" @interface AnimationView () @end @implementation AnimationView @synthesize minR,minG,minB; @synthesize maxR,maxG,maxB; @synthesize suduzhi; - (void)viewDidLoad { [super viewDidLoad]; i = 0; j = 0; timeNum = 1; self.view.backgroundColor = [UIColor blackColor]; timer = [NSTimer scheduledTimerWithTimeInterval:[suduzhi floatValue] target:self selector:@selector(drawCirle) userInfo:nil repeats:YES]; } - (void)drawCirle { timeNum = timeNum +1; CALayer *waveLayer=[CALayer layer]; if (timeNum < 100) { waveLayer.frame = CGRectMake(self.view.center.x, self.view.center.y, 10, 10); } else if (timeNum >100 && timeNum <170){ waveLayer.frame = CGRectMake(i, i*2, 10, 10); i = i +5; } else if (timeNum >170 && timeNum <240){ waveLayer.frame = CGRectMake(self.view.frame.size.width-j, j*2, 10, 10); j = j +5; } else if (timeNum >240 && timeNum < 400) { int x = (arc4random()%300)+20; int y = (arc4random()%500)+20; waveLayer.frame = CGRectMake(x, y, 10, 10); } else if (timeNum>400) { [timer invalidate];//停止計時器 } //設置色彩 int rMin = (int)[minR integerValue]; int rMax = (int)[maxR integerValue]; int gMin = (int)[minG integerValue]; int gMax = (int)[maxG integerValue]; int bMin = (int)[minB integerValue]; int bMax = (int)[maxB integerValue]; int redNum = (arc4random()%rMax) + rMin; int greenNum = (arc4random()%gMax) + gMin; int blueNum = (arc4random()%bMax) + bMin; NSLog(@"%d %d %d",redNum,greenNum,blueNum); UIColor *color = [UIColor colorWithRed:redNum/255.0 green:greenNum/255.0 blue:blueNum/255.0 alpha:1.0]; waveLayer.borderColor = color.CGColor; waveLayer.borderWidth =0.5; waveLayer.cornerRadius =5.0; [self.view.layer addSublayer:waveLayer]; [self scaleBegin:waveLayer]; } -(void)scaleBegin:(CALayer *)aLayer { float maxScale; if (timeNum < 50) { maxScale = 50.0; }else { maxScale = 20.0; } if (aLayer.transform.m11<maxScale) { if (aLayer.transform.m11==1.0) { [aLayer setTransform:CATransform3DMakeScale( 1.1, 1.1, 1.0)]; }else{ [aLayer setTransform:CATransform3DScale(aLayer.transform, 1.1, 1.1, 1.0)]; } [self performSelector:_cmd withObject:aLayer afterDelay:0.05]; }else [aLayer removeFromSuperlayer]; } @end

3、來看看截圖的效果吧



Demo下載地址:http://download.csdn.net/detail/u010545480/8647867

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 欧美18vide0sex性欧美在线 | 国产v综合v亚洲欧美 | 免费国产在线观看老王影院 | 国产日韩欧美高清 | 亚洲成a人片在线播放观看国产 | 亚洲视频精品在线观看 | www.操你 | 国产成人一区二区三区在线视频 | 亚洲精品国产精品国自产观看 | 久久久久嫩草影院精品 | 欧美性大交| 精品国产理论在线观看不卡 | 久久影视免费观看网址 | 国产精品中文字幕在线观看 | 秋霞免费手机理论视频在线观看 | 无人日本免费视频 | 狠狠躁夜夜躁人人躁婷婷视频 | 国产精品亚洲精品久久成人 | 欧美性受xxxx喷水视频 | 欧美一级日韩 | 天天视频国产免费入口 | 欧美又大粗又爽又黄大片视频黑人 | 伊人网在线免费观看 | 自拍偷拍亚洲 | 手机看片福利日韩国产 | 福利国产在线 | 欧美 xx性 在线 | 欧美国产精品主播一区 | 最近中文字幕免费2019高清 | 午夜欧美精品久久久久久久 | 日韩一级在线 | 亚洲最新在线观看 | 校园春色欧美激情 | 亚洲综合五月 | free欧美videos粗暴 | 久久久久亚洲精品一区二区三区 | 日本欧美一区二区三区片 | 国产精品久久久久久久久久免费 | 欧美性受xxxx黑人xyx性爽 | 国产亚洲一区在线 | 亚洲天堂第一 |