`
stephen830
  • 浏览: 3016268 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用NSTimer和CGAffineTransformMakeRotation实现旋转动画

 
阅读更多

 

使用NSTimer和CGAffineTransformMakeRotation实现旋转动画

 

首先定义需要用到的变量

    float angle;
    NSTimer* timer;

 

#pragma mark ------------------->旋转图片<-------------------
- (void)_doRotateImage{
    //演员初始化
    UIImageView* ivImage = [[UIImageView alloc] init];
    UIImage* img = [UIImage imageNamed:@"image_loading"];
    ivImage.image=img;
    ivImage.frame=CGRectMake(100, 200, img.size.width, img.size.height);
    ivImage.center=self.view.center;
    ivImage.userInteractionEnabled=YES;
    ivImage.tag=9999;
    [self.view addSubview:ivImage];
    //初始化定时器NSTimer
    timer =[NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(_doOnTimer) userInfo:nil repeats:YES];
    
    //添加一个按钮用来暂停、开始定时器
    UIButton* btnTimer = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [btnTimer setTitle:@"暂停" forState:UIControlStateNormal];
    [btnTimer setTitle:@"开启" forState:UIControlStateSelected];
    [btnTimer addTarget:self action:@selector(_doPauseOrStartTimer:) forControlEvents:UIControlEventTouchUpInside];
    btnTimer.frame=CGRectMake(100, 340, 100, 40);
    [self.view addSubview:btnTimer];
}

#pragma mark 定时器的触发事件
-(void) _doOnTimer{
    UIView* view = [self.view.window viewWithTag:9999];
    angle = angle + 0.05;//angle角度 double angle;
    if (angle > 6.28) {//大于 M_PI*2(360度) 角度再次从0开始
        angle = 0;
    }
    CGAffineTransform transform=CGAffineTransformMakeRotation(angle);
    view.transform = transform;
}


-(void) _doPauseOrStartTimer:(UIButton*) sender{
    
    if (sender.selected) {
        [timer setFireDate:[NSDate distantPast]];
    }else{
        [timer setFireDate:[NSDate distantFuture]];
    }
    sender.selected=!sender.selected;
    
}

 

效果图如下:

 




 
 

 

 

  • 大小: 3.3 KB
  • 大小: 5.7 KB
  • 大小: 16.2 KB
  • 大小: 16.8 KB
分享到:
评论

相关推荐

    ios-视图弹出、平移、旋转、翻转、剪切等变换效果.zip

    3. **视图旋转**:旋转动画涉及到视图的transform属性,尤其是`CGAffineTransformMakeRotation`函数的应用。传入弧度值,视图会绕着自己的中心点旋转相应角度。 4. **视图翻转**:翻转效果通常用于展示视图的前后...

    ios-loadingLayer.zip

    在代码实现上,开发者可能使用了CADisplayLink或者NSTimer来控制动画的帧率,确保动画流畅且节省系统资源。 创建这样一个加载动画轮子,开发者可能会使用以下步骤: 1. **创建视图**:首先,创建一个自定义UIView...

    指定角度旋转、幸运大转盘、转盘、抽奖

    例如,如果我们想要一个转盘从当前位置开始匀加速旋转,然后在接近目标角度时匀减速,我们可以使用`CADisplayLink`或者`NSTimer`来控制动画的时间间隔,通过逐渐增加旋转速度达到加速的效果,而在接近目标角度时逐渐...

    (0084)-iOS/iPhone/iPAD/iPod源代码-动画(Animation)-GraphicsAnimation

    在iOS开发中,动画是为用户界面添加...提供的"GraphicsAnimation"源代码应包含具体的示例和实现细节,帮助开发者深入理解这些概念。在Mac环境下解压并运行这个项目,将有助于更好地学习和掌握iOS图形和动画的开发技术。

    ios-动画生成的轮播图 有多种效果可供选择.zip

    3. **旋转过渡**:利用CGAffineTransformMakeRotation函数,让视图绕某一轴旋转,达到翻转效果,为用户带来新颖的视觉体验。 4. **缩放过渡**:改变视图的scale属性,实现放大或缩小的动画,使轮播图看起来更有立体...

    一个可以定时翻转图片的程序

    例如,可以使用CGAffineTransformScale、CGAffineTransformRotate和CGAffineTransformTranslate等方法,或者直接设置CGAffineTransformMakeRotation来实现旋转,达到翻转的效果。如果要实现定时翻转,可以结合...

    ios开发记录

    //一般使用bounds不设置x和y只设置宽和高 //center是相对于其父视图而言的,是CGpoint类型 _vi.bounds=CGRectMake(0, 0, 200, 200); // vi.center=CGPointMake(160, 240); _vi.center=_window.center; //arc4...

Global site tag (gtag.js) - Google Analytics