亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS實現新年抽獎轉盤效果的思路

2020-07-26 02:21:47
字體:
來源:轉載
供稿:網友

臨近春節,相信不少app都會加一個新的需求――新年抽獎

不多廢話,先上GIF效果圖

DEMO鏈接

1. 跑馬燈效果

2. 抽獎效果

實現步驟:

一、跑馬燈效果

其實很簡單,就是通過以下兩張圖片,用NSTimer無限替換,達到跑馬燈的效果

bg_lamp_1@2x.png

bg_lamp_2@2x.png

實現代碼:

_rotaryTable = [[UIImageView alloc] initWithFrame:CGRectMake((kScreenWidth-366*XT)/2, 218*XT, 366*XT, 318*XT)];_rotaryTable.tag = 100;[_rotaryTable setImage:[UIImage imageNamed:@"bg_lamp_1"]];[scrollView addSubview:_rotaryTable];_itemBordeTImer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(itemBordeTImerEvent) userInfo:nil repeats:YES];[[NSRunLoop currentRunLoop] addTimer:_itemBordeTImer forMode:NSRunLoopCommonModes];
- (void)itemBordeTImerEvent{ if (_rotaryTable.tag == 100) { _rotaryTable.tag = 101; [_rotaryTable setImage:[UIImage imageNamed:@"bg_lamp_2"]]; }else if (_rotaryTable.tag == 101){ _rotaryTable.tag = 100; [_rotaryTable setImage:[UIImage imageNamed:@"bg_lamp_1"]]; }}

二、抽獎效果

1.初始化獎品數組,以及按照 從上到下,從左到右 的順序布局UI界面

_itemTitleArray = @[@"3跳幣",@"嘉年華門票",@"8跳幣",@"10朵花",@"128朵花",@"2018跳幣",@"528跳幣",@"128跳幣",@"28朵花",@"88跳幣"];for (int i = 0 ; i < 4; i ++) { UIImageView *img = [[UIImageView alloc] initWithFrame:CGRectMake(i*82*XT, 0, 78*XT, 80*XT)]; [img setImage:[UIImage imageNamed:itemImgArray[i]]]; [itemView addSubview:img];  UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 63*XT, 78*XT, 13*XT)]; label.textAlignment = NSTextAlignmentCenter; label.textColor = [UIColor whiteColor]; label.font = [UIFont systemFontOfSize:13*XT]; label.text = _itemTitleArray[I]; [img addSubview:label]; }  for (int i = 0 ; i < 2; i ++) { UIImageView *img = [[UIImageView alloc] initWithFrame:CGRectMake(i*(78*XT+169*XT), 84*XT, 78*XT, 80*XT)]; [img setImage:[UIImage imageNamed:itemImgArray[i+4]]]; [itemView addSubview:img];  UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 63*XT, 78*XT, 13*XT)]; label.textAlignment = NSTextAlignmentCenter; label.textColor = [UIColor whiteColor]; label.font = [UIFont systemFontOfSize:13*XT]; label.text = _itemTitleArray[i+4]; [img addSubview:label]; }  for (int i = 0 ; i < 4; i ++) { UIImageView *img = [[UIImageView alloc] initWithFrame:CGRectMake(i*82*XT, 168*XT, 78*XT, 80*XT)]; [img setImage:[UIImage imageNamed:itemImgArray[i+6]]]; [itemView addSubview:img];  UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 63*XT, 78*XT, 13*XT)]; label.textAlignment = NSTextAlignmentCenter; label.textColor = [UIColor whiteColor]; label.font = [UIFont systemFontOfSize:13*XT]; label.text = _itemTitleArray[i+6]; [img addSubview:label]; }

2.點擊之后開始抽獎按鈕后,先快速地將選中框 正時針 轉三圈,再慢速地在 一圈之內 旋轉至中獎位置,請 注意 是按照 正時針 的順序旋轉,和UI布局的順序不一致,如圖所示:

- (void)getLotteryInfo{ // 快速旋轉計數,在NSTimer的方法下自增到29時結束,代表選中框快速旋轉了三圈,結束快速旋轉 _fastIndex = 0; // 慢速旋轉計數,在NSTimer的方法下自增到下面 _selectedIndex 的數字時,選中框到達中獎位置,結束慢速旋轉 _slowIndex = -1; // 中獎位置計數,按照順時針的順序,如上圖所示,若 _selectedIndex = 9 則獲得 9 所在位置的獎品 _selectedIndex = arc4random()%10;  // 根據獎品數組,獲取中獎信息 if (_selectedIndex<4) { _result = _itemTitleArray[_selectedIndex]; }else if (_selectedIndex == 4){ _result = @"2018跳幣"; }else if (_selectedIndex == 5){ _result = @"88跳幣"; }else if (_selectedIndex == 6){ _result = @"28朵花"; }else if (_selectedIndex == 7){ _result = @"128跳幣"; }else if (_selectedIndex == 8){ _result = @"528跳幣"; }else if (_selectedIndex == 9){ _result = @"128朵花"; } _itemBorderView.hidden = NO; // 開啟快速旋轉,時間間隔為0.1秒 _fastTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(fastTimerEvent) userInfo:nil repeats:YES]; [[NSRunLoop currentRunLoop] addTimer:_fastTimer forMode:NSRunLoopCommonModes];}

3.NSTimer 快速旋轉事件

- (void)fastTimerEvent{ // _fastIndex 自增 _fastIndex = _fastIndex + 1; // 順時針移動選中框的位置 if (_fastIndex % 10 == 0) { [_itemBorderView setFrame:CGRectMake(-1*XT, -1*XT, 80*XT, 82*XT)]; }else if (_fastIndex % 10 == 1){ [_itemBorderView setFrame:CGRectMake(82*XT-1*XT, -1*XT, 80*XT, 82*XT)]; }else if (_fastIndex % 10 == 2){ [_itemBorderView setFrame:CGRectMake(2*82*XT-1*XT, -1*XT, 80*XT, 82*XT)]; }else if (_fastIndex % 10 == 3){ [_itemBorderView setFrame:CGRectMake(3*82*XT-1*XT, -1*XT, 80*XT, 82*XT)]; }else if (_fastIndex % 10 == 4){ [_itemBorderView setFrame:CGRectMake(3*82*XT-1*XT, 84*XT-1*XT, 80*XT, 82*XT)]; }else if (_fastIndex % 10 == 5){ [_itemBorderView setFrame:CGRectMake(3*82*XT-1*XT, 2*84*XT-1*XT, 80*XT, 82*XT)]; }else if (_fastIndex % 10 == 6){ [_itemBorderView setFrame:CGRectMake(2*82*XT-1*XT, 2*84*XT-1*XT, 80*XT, 82*XT)]; }else if (_fastIndex % 10 == 7){ [_itemBorderView setFrame:CGRectMake(82*XT-1*XT, 2*84*XT-1*XT, 80*XT, 82*XT)]; }else if (_fastIndex % 10 == 8){ [_itemBorderView setFrame:CGRectMake(-1*XT, 2*84*XT-1*XT, 80*XT, 82*XT)]; }else if (_fastIndex % 10 == 9){ [_itemBorderView setFrame:CGRectMake(-1*XT, 84*XT-1*XT, 80*XT, 82*XT)]; } // _fastIndex = 29 時選中框結束快速旋轉,開啟慢速旋轉,時間間隔為0.45秒 if (_fastIndex >= 29) { [_fastTimer invalidate]; _slowTimer = [NSTimer scheduledTimerWithTimeInterval:0.45 target:self selector:@selector(slowTimerEvent) userInfo:nil repeats:YES]; [[NSRunLoop currentRunLoop] addTimer:_slowTimer forMode:NSRunLoopCommonModes]; }}

4.NSTimer 慢速旋轉事件

// 慢速移動動畫- (void)slowTimerEvent{ // _slowIndex 自增 _slowIndex = _slowIndex + 1; // 順時針移動轉中框的位置 if (_slowIndex % 10 == 0) { [_itemBorderView setFrame:CGRectMake(-1*XT, -1*XT, 80*XT, 82*XT)]; }else if (_slowIndex % 10 == 1){ [_itemBorderView setFrame:CGRectMake(82*XT-1*XT, -1*XT, 80*XT, 82*XT)]; }else if (_slowIndex % 10 == 2){ [_itemBorderView setFrame:CGRectMake(2*82*XT-1*XT, -1*XT, 80*XT, 82*XT)]; }else if (_slowIndex % 10 == 3){ [_itemBorderView setFrame:CGRectMake(3*82*XT-1*XT, -1*XT, 80*XT, 82*XT)]; }else if (_slowIndex % 10 == 4){ [_itemBorderView setFrame:CGRectMake(3*82*XT-1*XT, 84*XT-1*XT, 80*XT, 82*XT)]; }else if (_slowIndex % 10 == 5){ [_itemBorderView setFrame:CGRectMake(3*82*XT-1*XT, 2*84*XT-1*XT, 80*XT, 82*XT)]; }else if (_slowIndex % 10 == 6){ [_itemBorderView setFrame:CGRectMake(2*82*XT-1*XT, 2*84*XT-1*XT, 80*XT, 82*XT)]; }else if (_slowIndex % 10 == 7){ [_itemBorderView setFrame:CGRectMake(82*XT-1*XT, 2*84*XT-1*XT, 80*XT, 82*XT)]; }else if (_slowIndex % 10 == 8){ [_itemBorderView setFrame:CGRectMake(-1*XT, 2*84*XT-1*XT, 80*XT, 82*XT)]; }else if (_slowIndex % 10 == 9){ [_itemBorderView setFrame:CGRectMake(-1*XT, 84*XT-1*XT, 80*XT, 82*XT)]; } // 當 _slowIndex >= _selectedIndex 時選中框結束慢速旋轉,開啟中獎獎品界面 if (_slowIndex >= _selectedIndex) { [_slowTimer invalidate]; dispatch_time_t delayTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5/*延遲執行時間*/ * NSEC_PER_SEC)); dispatch_after(delayTime, dispatch_get_main_queue(), ^{ self.startButton.userInteractionEnabled = YES; [self showLotteryRlesultView]; }); }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品国产高清自在线| 菠萝蜜影院一区二区免费| 亚洲美女久久久| 一区二区欧美亚洲| 国产激情久久久久| 欧美性jizz18性欧美| 亚洲国产女人aaa毛片在线| 伊人久久五月天| 国内自拍欧美激情| 亚洲亚裔videos黑人hd| 久久久久久久久久久网站| 日韩电视剧在线观看免费网站| 国产高清在线不卡| 国产成人精品视频| 91在线观看免费观看| 色偷偷av亚洲男人的天堂| 日本国产一区二区三区| 国产精品爽黄69天堂a| 国内精品视频在线| 亚洲一区二区三区视频播放| 91精品久久久久久久久久久| 日韩成人av网| 中文字幕日韩精品有码视频| 欧美国产日本高清在线| 91精品视频免费观看| 97精品在线观看| 欧美疯狂xxxx大交乱88av| 欧美多人爱爱视频网站| 欧美影院在线播放| 午夜精品一区二区三区av| 中文在线不卡视频| 久久精品在线播放| 久久久精品久久久| 欧美夫妻性视频| 日韩一区二区欧美| 中文字幕亚洲欧美日韩高清| 亚洲欧美制服中文字幕| 国产一区红桃视频| 午夜精品一区二区三区在线播放| 北条麻妃99精品青青久久| 98精品国产高清在线xxxx天堂| 久久色在线播放| 欧美日韩福利视频| 久久精品国产一区二区电影| 成人免费视频97| 亚洲国语精品自产拍在线观看| 欧美高清视频一区二区| 久热精品视频在线免费观看| 亚洲bt欧美bt日本bt| 91久久久久久久久久久久久| 亚洲国产精品va在线看黑人| 一区二区三区动漫| 亚洲精品国精品久久99热一| 亚洲加勒比久久88色综合| 国产一区二区日韩精品欧美精品| 亚洲国产婷婷香蕉久久久久久| 国产成人在线一区二区| 欧美高清视频在线播放| 国产主播喷水一区二区| 成人h视频在线观看播放| 国产成人av网| 久久成人这里只有精品| 欧洲精品久久久| 亚洲一区二区中文| 成人黄色在线观看| 亚洲黄色免费三级| 日韩精品久久久久久福利| 在线亚洲欧美视频| 视频一区视频二区国产精品| 国产精品久久久久9999| 国产精品久久久久久亚洲调教| 91禁国产网站| 精品国偷自产在线视频99| 久久久久久中文字幕| 夜夜嗨av一区二区三区四区| 欧美一级bbbbb性bbbb喷潮片| 国产免费亚洲高清| 日韩电影在线观看中文字幕| 色噜噜久久综合伊人一本| 麻豆国产va免费精品高清在线| 国产成人亚洲综合91| 亚洲一区中文字幕| 欧美大片免费观看| 日韩hd视频在线观看| 亚洲一区二区三区四区在线播放| 国产精品高清免费在线观看| 日韩美女免费视频| 亚洲高清一区二| 91精品国产一区| 亚洲男人天堂网| 91九色精品视频| 一区二区三区在线播放欧美| 欧美成人网在线| 国产欧美精品va在线观看| 欧美日韩成人免费| 亚洲人线精品午夜| 久久av红桃一区二区小说| 91在线播放国产| 大伊人狠狠躁夜夜躁av一区| 久久久精品国产亚洲| 国产精品精品久久久| 日韩欧美国产免费播放| 日韩av在线免费| 国产亚洲欧美日韩美女| 国产精品大片wwwwww| 尤物九九久久国产精品的分类| 国产精品日韩在线播放| 亚洲成人精品在线| 久久成人一区二区| 国产精品国产自产拍高清av水多| 国产91精品青草社区| 亚洲国产日韩一区| 欧美性极品少妇精品网站| 91精品啪aⅴ在线观看国产| 国产91色在线播放| 欧美一区二区视频97| 久久综合伊人77777尤物| 国产精品综合网站| 欧美另类极品videosbest最新版本| 国产亚洲精品久久久优势| 亚洲人午夜精品免费| 欧美在线观看一区二区三区| 精品国产乱码久久久久久天美| 久久久91精品国产| 日韩成人久久久| 国产日韩欧美夫妻视频在线观看| 奇门遁甲1982国语版免费观看高清| 色无极影院亚洲| 日韩av一区在线| 欧美激情网友自拍| 亚洲男人天堂视频| 精品亚洲一区二区三区在线观看| 亚洲美女免费精品视频在线观看| 亚洲精品福利资源站| 国产美女91呻吟求| 亚洲r级在线观看| 国产精品一区二区三区免费视频| 中文字幕亚洲欧美日韩2019| 欧美影院在线播放| 69av视频在线播放| 日韩欧美在线免费观看| 国产精品成人在线| 国产精品电影在线观看| 中文字幕免费精品一区| 欧美性生活大片免费观看网址| 91香蕉嫩草神马影院在线观看| 日本19禁啪啪免费观看www| 2019最新中文字幕| 国产精品中文久久久久久久| 韩国福利视频一区| 91精品综合视频| 91在线观看免费观看| 精品亚洲男同gayvideo网站| 成人黄色午夜影院| 午夜欧美大片免费观看| 亚洲精品视频免费| 亚洲欧美成人一区二区在线电影| 国产精品久久久久久婷婷天堂| 91成人国产在线观看| 日本精品久久电影| 亚洲va电影大全| 91免费的视频在线播放| 日韩电影在线观看永久视频免费网站| 欧美激情xxxx性bbbb|