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

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > 綜合技術(shù) > 轉(zhuǎn)盤功能的詳細(xì)實(shí)現(xiàn)

轉(zhuǎn)盤功能的詳細(xì)實(shí)現(xiàn)

來源:程序員人生   發(fā)布時(shí)間:2014-12-13 08:57:14 閱讀次數(shù):2632次

轉(zhuǎn)盤功能的詳細(xì)實(shí)現(xiàn)

1、自定義轉(zhuǎn)盤XIB

+ (instancetype)wheelView
{
   
return [[NSBundle mainBundle] loadNibNamed:@"HMWheelView" owner:nil options:nil][0];
}

2、添加按鈕
#warning 添加按鈕
- (void)awakeFromNib
{
     // 加載完XIB就開始啟動(dòng)轉(zhuǎn)盤
     self.link.paused = NO;
   
_rotationView.userInteractionEnabled = YES;

   
// 裁剪的大圖片
   
UIImage *bigImage = [UIImage imageNamed:@"LuckyAstrology"];
   
UIImage *selectedImage = [UIImage imageNamed:@"LuckyAstrologyPressed"];
   
   
// 圖片的尺寸
   
CGFloat imageW = 40 * [UIScreen mainScreen].scale;
   
CGFloat imageH = 47 * [UIScreen mainScreen].scale;
   
   
for (int i = 0; i < 12; i++) {
       
// 創(chuàng)建按鈕
       
HMWheelButton *button = [HMWheelButton buttonWithType:UIButtonTypeCustom];
       
       
// 錨點(diǎn)
        button.
layer.anchorPoint = CGPointMake(0.5, 1);
       
// 位置
        button.
layer.position = CGPointMake(self.bounds.size.width * 0.5, self.bounds.size.height * 0.5);
       
       
// 旋轉(zhuǎn)按鈕
        button.
layer.transform = CATransform3DMakeRotation(angle2radian(i * 30), 0, 0, 1);
       
       
// 尺寸
        button.
bounds = CGRectMake(0, 0, 68, 143);
       
       
// 設(shè)置選中時(shí)候的背景圖片
        [button
setBackgroundImage:[UIImage imageNamed:@"LuckyRototeSelected"] forState:UIControlStateSelected];
       
       
// 設(shè)置按鈕的圖片
       
// image:裁剪的圖片
       
// rect:裁剪的尺寸
      
CGRect clipRect = CGRectMake(i * imageW, 0, imageW, imageH);
      
CGImageRef smallImage = CGImageCreateWithImageInRect(bigImage.CGImage, clipRect);
        [button
setImage:[UIImage imageWithCGImage:smallImage] forState:UIControlStateNormal];
       
       
// 設(shè)置選中的圖片
       
CGImageRef selectedSmallImage = CGImageCreateWithImageInRect(selectedImage.CGImage, clipRect);
        [button
setImage:[UIImage imageWithCGImage:selectedSmallImage] forState:UIControlStateSelected];
       
       
// 監(jiān)聽點(diǎn)擊事件
        [button
addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchDown];
        
        // 默許選中第1個(gè)
       
if (i == 0) {
            [
self btnClick:button];
        }
        [
_rotationView addSubview:button]; 
    }
}


3、實(shí)現(xiàn)監(jiān)聽方法
#warning 監(jiān)聽按鈕點(diǎn)擊
- (void)btnClick:(UIButton *)button
{
   
_selectedButton.selected = NO;
    button.
selected = YES;
   
_selectedButton = button;
}

4、定義定時(shí)器
- (CADisplayLink *)link
{

   
if (_link == nil) {
       
CADisplayLink *link = [CADisplayLink displayLinkWithTarget:self selector:@selector(update)];
        [link
addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
       
_link = link;
    }
   
return _link;
}

- (
void)update
{
   
_rotationView.transform = CGAffineTransformRotate(_rotationView.transform((45 / 60.0) / 180.0 * M_PI));
}
5、實(shí)現(xiàn)開始選號(hào)功能

- (IBAction)start:(id)sender {

   
// 1.不要和用戶交互
   
_rotationView.userInteractionEnabled = NO;
   
// 2.取消漸漸的旋轉(zhuǎn)
    
_link.paused = YES;
   
   
CABasicAnimation *anim = [CABasicAnimation animation];

    anim.
keyPath = @"transform.rotation";

    anim.
toValue = @(M_PI * 2 * 3);

    anim.
duration = 0.5;
   
    anim.
delegate = self;

    [
_rotationView.layer addAnimation:anim forKey:nil];  
}

6、實(shí)現(xiàn)
CAAnimationDelegate的代理方法
- (
void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag
{
   
_rotationView.userInteractionEnabled = YES;

   
// 讓選中按鈕回到最在上面的中間位置:
   
CGFloat angle = atan2(_selectedButton.transform.b, _selectedButton.transform.a);

   
// 把我們的轉(zhuǎn)盤反向旋轉(zhuǎn)這么多°
   
_rotationView.transform = CGAffineTransformMakeRotation(-angle);
   
   
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        [
self startRotating];
    });
}
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 亚洲欧美综合另类 | 国产精品久久久久国产精品三级 | 欧美一区二区三区久久综 | 欧美日韩国产在线观看 | 亚洲图片另类 | 亚洲福利一区二区 | 国产视频大全 | 亚洲国产精品免费观看 | 久久福利一区二区三区 | 亚洲综合二区 | 国产乱淫a∨片免费视频 | 五月天精品视频播放在线观看 | 中文字幕不卡一区 二区三区 | 91真人毛片一级在线播放 | 亚洲三级黄色片 | 国产极品久久 | 综合图片小说 | 国产xxxxx在线播放 | 国产精品热久久毛片 | 日韩欧美精品中文字幕 | 国产黄色免费在线观看 | 国产精选第一页 | 欧美日韩亚洲国产精品一区二区 | 高清不卡一区 | 好好的曰www视频在线观看 | 免费网站看v片在线香蕉 | 亚洲视频在线一区二区 | 最近的中文字幕视频大全高清 | 中文字幕无线码中文字幕免费 | 国产a不卡片精品免费观看 国产a国产片色老头 | 久久精品国产精品亚洲人人 | 五月天视频网 | 亚洲精品欧美综合 | 最近最新中文字幕大全手机在线 | 日产精品一区二区三区免费 | 国产v国产v片大片线观看网站 | 欧美孕交videosfree另类 | 欧美成人性生活视频 | 乱在线伦视频免费 | 日本综合在线观看 | 日本69色视频在线观看 |