`
stephen830
  • 浏览: 3010237 次
  • 性别: 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
分享到:
评论

相关推荐

    简单的时间选择器Nstimer

    创建`NSTimer`通常使用`scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:`方法,参数包括时间间隔、目标对象、选择器、用户信息和是否重复。例如: ```swift let timer = Timer.scheduledTimer...

    NSTimer实现的小计时器

    这在实现倒计时、动画效果或者周期性任务时非常有用。`NSTimer`不是线程安全的,通常在主线程中创建和触发。 二、创建NSTimer的类方法 1. `+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)interval ...

    ios 时间定时器 NSTimer应用demo

    "02a - TimedAlert"可能是一个演示如何使用`NSTimer`来实现定时提醒的功能。在实际的项目中,这可能包括显示警告框、更新UI状态或其他特定任务。 总结,`NSTimer`在iOS开发中扮演着重要角色,尤其在实现定时功能时...

    深入理解CADisplayLink和NSTimer

    CADisplayLink主要用于那些需要与屏幕刷新同步的图形渲染任务,例如动画和游戏的渲染。由于它与屏幕刷新率紧密结合,所以可以提供流畅的视觉体验。 CADisplayLink与NSTimer的首要区别在于它们的触发时机。NSTimer...

    ios计时器NSTimer的使用

    创建`NSTimer`通常使用`scheduledTimerWithTimeInterval`方法,这个方法接受四个参数:时间间隔(interval)、目标(target)、选择器(selector)和用户信息(userInfo)。例如: ```swift let timer = Timer....

    ios-仿GYMWATCH 旋转动画计数.zip

    在这个项目中,开发者可能使用了`UIView`的动画方法来创建旋转动画,比如`animate(withDuration:animations:)`或`CAAnimation`中的`CABasicAnimation`,这些可以实现视图属性的平滑变化,从而达到旋转动画的效果。...

    NSTimer 使用 文档说明

    ### NSTimer 使用 文档说明详解 #### 一、前言 在iOS开发中,`NSTimer`是一个非常实用且常见的类,它可以帮助开发者实现定时任务的功能。本文将深入解析`NSTimer`的使用方法,包括如何创建定时器、设置定时器的...

    NSTimer定时器

    除了`NSTimer`外,还有其他定时器选项,如`CADisplayLink`(主要用于与屏幕刷新同步的动画)和GCD的`DispatchSourceTimer`(更灵活,支持精确的定时)。选择哪种定时器取决于具体需求,例如性能、精度和内存管理。 ...

    NSTimer在tableView上的复用

    7. **使用 GCD 的 Timer**:另一种替代方案是使用GCD的 `DispatchSourceTimer`,它提供了更多的控制和更少的内存管理问题,但使用起来比 `NSTimer` 稍复杂。 8. **考虑 `tableView(_:estimatedHeightForRowAt:)` 和...

    深入理解CADisplayLink和NSTimer-Epub

    详细讲解CADisplayLink和NSTimer的区别。

    IOS应用源码——nstimer.zip

    在iOS开发中,NSTimer常用于实现动画、心跳检测、轮询数据等任务。但是,当应用进入后台时,除非特别设置,NSTimer会暂停工作。因此,对于需要在后台继续运行的任务,可能需要使用其他技术如Background Fetch或Push ...

    ios UIScrollView PageControl NSTimer

    在这个项目中,我们关注的是如何利用`UIScrollView`与`UIPageControl`以及`NSTimer`来实现一个自动循环滑动的效果。下面我们将详细探讨这些知识点。 1. **UIScrollView 循环滑动** 在`UIScrollView`中实现循环滑动...

    ios-条形码支付点击动画.zip

    可以使用`CADisplayLink`或者`NSTimer`来精确控制动画的时间和帧率。 **代码实现** 在`WeiXinBarCodeImitate 2`这个子文件中,可能会包含实现这一动画效果的具体代码。这可能包括创建条形码视图,设置初始位置,...

    NSTimer-Blocks, 在NSTimer上提供块功能,简单分类.zip

    NSTimer-Blocks, 在NSTimer上提供块功能,简单分类 自述文件NSTimer上非常简单的类别,它可以使用块。工作原理我认为如果你使用的是一个块,你可以能不需要将任何用户指定的对象传递到计时器。 你只要从街区里得到你...

    NSTimer实现图片幻灯片效果(仿腾讯新闻图片ppt效果)

    模仿腾讯新闻图片频道的图片浏览的幻灯片效果.

    ios-NStimer.zip

    在iOS开发中,`NSTimer` ...总的来说,`NSTimer`结合适当的视图操作和动画,可以有效地实现信息轮播功能。在实际开发中,你可能还需要考虑其他因素,如错误处理、界面交互等,但上述内容为你提供了一个基本的实现框架。

     IOS核心动画-旋转Demo

    下面我们将深入探讨核心动画的基本概念、图片旋转的关键技术和无限循环滚动的实现方法。 一、核心动画基础 核心动画是iOS中的一个底层动画框架,它负责处理视图的渲染和动画。通过核心动画,开发者可以创建出流畅、...

    ios-贝塞尔曲线实现渐变动画效果.zip

    贝塞尔曲线是一种在计算机图形学中广泛使用的数学工具,它能够帮助我们精确地控制曲线的形状,从而实现各种复杂的动画路径。 首先,我们需要了解贝塞尔曲线的基本概念。贝塞尔曲线由控制点和起点、终点决定,分为...

    IOS 中NSTimer定时器的使用

    nstimer 是 iOS 开发中一个常用的工具,...正确理解和使用 NSTimer 可以帮助开发者实现各种定时功能,比如倒计时、动画效果、网络请求重试等。在实际项目中,一定要记住在适当的时候停止并释放定时器,避免内存泄漏。

Global site tag (gtag.js) - Google Analytics