日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

iOS實現轉盤效果

瀏覽:104日期:2022-09-17 10:10:29

本文實例為大家分享了iOS實現轉盤效果的具體代碼,供大家參考,具體內容如下

Demo下載地址: iOS轉盤效果

功能:實現了常用的iOS轉盤效果,輪盤抽獎效果的實現,轉盤可以暫停,旋轉,已經快速旋轉抽獎,選中的效果指向正上方。

效果圖:

iOS實現轉盤效果

工程文件目錄:

iOS實現轉盤效果

核心代碼:

//// ViewController.m// 轉盤效果//// Created by llkj on 2017/8/31.// Copyright © 2017年 LayneCheung. All rights reserved.//#import 'ViewController.h'#import 'WheelView.h'@interface ViewController ()@property (nonatomic, weak) WheelView *wheelV;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; WheelView *wheelV = [WheelView wheelView]; wheelV.center = self.view.center; self.wheelV = wheelV; [self.view addSubview:wheelV];}- (IBAction)rotation:(id)sender { [self.wheelV rotation];}- (IBAction)stop:(id)sender { [self.wheelV stop];}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}@end

WheelView文件

//// WheelView.h// 轉盤效果//// Created by llkj on 2017/8/31.// Copyright © 2017年 LayneCheung. All rights reserved.//#import <UIKit/UIKit.h>@interface WheelView : UIView+ (instancetype)wheelView;- (void)rotation;- (void)stop;@end

//// WheelView.m// 轉盤效果//// Created by llkj on 2017/8/31.// Copyright © 2017年 LayneCheung. All rights reserved.//#import 'WheelView.h'#import 'WheelBtn.h'#define angle2Rad(angle) ((angle) / 180.0 * M_PI)@interface WheelView ()<CAAnimationDelegate>@property (weak, nonatomic) IBOutlet UIImageView *contentV;@property (nonatomic, weak) UIButton *selectBtn;@property (nonatomic, strong) CADisplayLink *link;@end@implementation WheelView- (CADisplayLink *)link { if (_link == nil) { CADisplayLink *link = [CADisplayLink displayLinkWithTarget:self selector:@selector(update)]; [link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode]; _link = link; } return _link;}+ (instancetype)wheelView { return [[[NSBundle mainBundle] loadNibNamed:@'WheelView' owner:nil options:nil] lastObject];}- (instancetype)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { self = [[[NSBundle mainBundle] loadNibNamed:@'WheelView' owner:nil options:nil] lastObject]; } return self;}- (void)awakeFromNib { [super awakeFromNib]; CGFloat btnW = 68; CGFloat btnH = 143; CGFloat angle = 0; //加載原始大圖片 UIImage *oriImage = [UIImage imageNamed:@'LuckyAstrology']; //加載原始選中的大圖片 UIImage *oriSelImg = [UIImage imageNamed:@'LuckyAstrologyPressed']; CGFloat X = 0; CGFloat Y = 0; CGFloat sacle = [UIScreen mainScreen].scale; CGFloat clipW = oriImage.size.width / 12.0 * sacle; CGFloat clipH = oriImage.size.height * sacle; for (int i = 0; i < 12; i ++) { WheelBtn *btn = [WheelBtn buttonWithType:UIButtonTypeCustom]; btn.bounds = CGRectMake(0, 0, btnW, btnH); //按鈕正常狀態圖片 X = i * clipW; //給定一張圖片截取指定區域內的圖片 CGImageRef clipImg = CGImageCreateWithImageInRect(oriImage.CGImage, CGRectMake(X, Y, clipW, clipH)); [btn setImage:[UIImage imageWithCGImage:clipImg] forState:UIControlStateNormal]; //按鈕選中狀態圖片 CGImageRef clipSelImg = CGImageCreateWithImageInRect(oriSelImg.CGImage, CGRectMake(X, Y, clipW, clipH)); [btn setImage:[UIImage imageWithCGImage:clipSelImg] forState:UIControlStateSelected]; [btn setBackgroundImage:[UIImage imageNamed:@'LuckyRototeSelected'] forState:UIControlStateSelected]; btn.layer.anchorPoint = CGPointMake(0.5, 1); btn.layer.position = CGPointMake(self.bounds.size.width * 0.5, self.bounds.size.height * 0.5); btn.transform = CGAffineTransformMakeRotation(angle2Rad(angle)); angle += 30; [btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside]; [self.contentV addSubview:btn]; //默認第一個按鈕選中 if (i == 0) { [self btnClick:btn]; } }}- (void)btnClick:(UIButton *)btn { //1.讓當前選中的按鈕取消選中 self.selectBtn.selected = NO; //2.讓當前點擊的按鈕成為選中狀態 btn.selected = YES; //3.當前點擊的按鈕成為選中狀態 self.selectBtn = btn;}- (void)rotation { self.link.paused = NO;}- (void)stop { self.link.paused = YES;}- (void)update { self.contentV.transform = CGAffineTransformRotate(self.contentV.transform, M_PI / 300.0);}- (IBAction)start:(id)sender { //快速轉幾圈 CABasicAnimation *anim = [CABasicAnimation animation]; anim.keyPath = @'transform.rotation'; anim.toValue = @(M_PI * 4); anim.duration = 0.5; anim.repeatCount = 1; anim.delegate = self; [self.contentV.layer addAnimation:anim forKey:nil];}- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag { CGAffineTransform transform = self.selectBtn.transform; //獲取當前選中按鈕的旋轉角度 CGFloat angle = atan2(transform.b, transform.a); //動畫結束時當前選中的按鈕指向最上方 self.contentV.transform = CGAffineTransformMakeRotation(-angle);}@end

WheelBtn.m

//// WheelBtn.m// 轉盤效果//// Created by llkj on 2017/8/31.// Copyright © 2017年 LayneCheung. All rights reserved.//#import 'WheelBtn.h'@implementation WheelBtn- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { CGRect rect = CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height * 0.5); if (CGRectContainsPoint(rect, point)) { // 在指定的范圍內 return [super hitTest:point withEvent:event]; } else { return nil; }}//取消按鈕高亮狀態做的事- (void)setHighlighted:(BOOL)highlighted {}//返回當前按鈕中的image位置和尺寸- (CGRect)imageRectForContentRect:(CGRect)contentRect { return CGRectMake((contentRect.size.width - 40) *0.5, 20, 40, 48);}//返回當前按鈕中的Label位置和尺寸//- (CGRect)titleRectForContentRect:(CGRect)contentRect{////}@end

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

標簽: IOS
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美日韩国产一区精品一区| 亚洲一区久久| 亚洲风情在线资源| 国产一区久久| 久久久久欧美精品| 视频小说一区二区| 婷婷激情久久| 国产精品毛片久久| 日本不良网站在线观看| 国产v日韩v欧美v| 精品亚洲a∨一区二区三区18| 黄色精品视频| 久久久久久久久久久妇女| 欧美激情视频一区二区三区免费 | 91精品福利| 日韩av一区二区在线影视| 亚洲青青久久| 在线日韩中文| 精品五月天堂| 久久精品影视| 亚洲精品麻豆| 大香伊人久久精品一区二区| 久久成人亚洲| 国产精品国码视频| 亚洲1区在线| 三级亚洲高清视频| 亚洲精品在线国产| 久久精品99国产国产精| 国产精品1luya在线播放| 激情中国色综合| 韩国精品主播一区二区在线观看 | 91一区二区| 久久黄色影院| 天堂av在线一区| 久久国产免费看| 深夜福利视频一区二区| 在线视频亚洲| 国产美女久久| 日韩精品欧美激情一区二区| 亚洲综合另类| 麻豆国产精品777777在线| 亚洲一级黄色| 日韩福利视频网| 成人福利av| 亚洲深深色噜噜狠狠爱网站 | 国产精品一线| 久久国产免费| 久久精品97| 精品成人免费一区二区在线播放| 综合在线一区| av中文字幕在线观看第一页| 99国产精品久久久久久久| 国产日韩1区| 99精品视频精品精品视频| 日本午夜精品| 亚洲国产专区| 日韩国产91| 亚洲成av在线| 国产欧美自拍| 一本色道精品久久一区二区三区| 国产欧美大片| 激情婷婷综合| 久久xxx视频| 在线视频精品| 综合日韩av| 国产精品一在线观看| 久久高清国产| 激情国产在线| 国产日韩视频在线| 麻豆亚洲精品| 日韩欧美二区| 国产亚洲一区二区三区不卡| 久久久久久美女精品| 国产午夜久久av| 黄色亚洲免费| 97精品国产一区二区三区| 日本不卡一二三区黄网| 久久黄色影院| 美女精品视频在线| 视频一区中文字幕精品| 极品日韩av| 久久av偷拍| 亚洲精品国产精品粉嫩| 欧美日韩国产传媒| 国内一区二区三区| 国产精品手机在线播放| 美国欧美日韩国产在线播放| 高清日韩欧美| 久久99青青| 视频国产精品| 香蕉成人久久| 久久精品免费一区二区三区 | 亚洲欧美在线综合| 国产一区二区三区自拍| 激情国产在线| 国产一区二区久久久久| 日本三级亚洲精品| 亚洲精品九九| 亚洲影视一区| 久久最新视频| 99视频一区| 久久五月天小说| 日韩高清中文字幕一区二区| 欧美激情视频一区二区三区在线播放| 亚洲精品影视| 亚洲尤物av| 免费视频久久| 性色一区二区| 亚洲免费一区二区| 亚洲欧洲日本mm| 蜜桃一区二区三区| 97精品国产一区二区三区| 久久亚洲人体| 老司机精品在线| 久久天堂影院| 精品视频网站| 三上亚洲一区二区| 成人三级高清视频在线看| 精品一区二区男人吃奶| 国产精品黄网站| 国产精品久久免费视频| 国产欧美日韩精品一区二区免费 | 日韩精品久久久久久久软件91| 国产精品外国| 国产午夜精品一区二区三区欧美 | 伊人久久高清| 婷婷综合六月| 韩日一区二区三区| 亚洲免费影视| 一区二区电影在线观看| 日韩专区视频网站| 日本成人中文字幕在线视频| 日韩一区精品| 国产私拍福利精品视频二区| 亚洲欧美久久精品| 日韩综合小视频| 久久国产乱子精品免费女| 国产精品黄色| 国产精品久久久久久久免费观看 | 日本在线观看不卡视频| 日本亚洲欧美天堂免费| 国产情侣久久| 国产欧美亚洲一区| 国模精品一区| 国产91精品对白在线播放| 2023国产精品久久久精品双| 三级欧美在线一区| 国产精品亚洲欧美一级在线| 久久精品一区二区国产| 国产一区二区三区四区五区传媒| 亚洲一区资源| 国产精品女主播一区二区三区| 四虎精品永久免费| 精品视频国内| 欧洲一区二区三区精品| 99香蕉国产精品偷在线观看| 日韩高清二区| 免费看一区二区三区| 天堂√中文最新版在线| 欧美精品一线| 日韩激情精品| 成人小电影网站| 首页亚洲欧美制服丝腿| 国产亚洲一区| 天堂8中文在线最新版在线| 亚洲自啪免费| 免费在线观看一区| 亚洲一本视频| 日韩高清欧美激情| 亚洲综合电影| 蜜桃一区二区三区在线| 久久久久伊人| 亚洲福利专区| 国产亚洲观看| 成人精品亚洲| 日本亚洲视频在线| 国产精品久久观看| 亚洲欧美日韩精品一区二区 | 久久九九精品| 日韩区欧美区| 国产欧洲在线| 99视频一区| 欧美天堂一区二区| 91看片一区| 日本欧美一区| 99久久久久国产精品| 欧美精品影院| 欧美在线影院| 精品视频国内| 少妇精品在线| 在线视频观看日韩| 美女视频黄 久久| 免费人成精品欧美精品| 岛国精品一区| 日本不卡视频在线观看| 久久蜜桃av| 久久免费精品| 视频一区在线播放| 91亚洲人成网污www| 日韩精品一区二区三区av |