使用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; }
效果图如下:
相关推荐
创建`NSTimer`通常使用`scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:`方法,参数包括时间间隔、目标对象、选择器、用户信息和是否重复。例如: ```swift let timer = Timer.scheduledTimer...
这在实现倒计时、动画效果或者周期性任务时非常有用。`NSTimer`不是线程安全的,通常在主线程中创建和触发。 二、创建NSTimer的类方法 1. `+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)interval ...
"02a - TimedAlert"可能是一个演示如何使用`NSTimer`来实现定时提醒的功能。在实际的项目中,这可能包括显示警告框、更新UI状态或其他特定任务。 总结,`NSTimer`在iOS开发中扮演着重要角色,尤其在实现定时功能时...
CADisplayLink主要用于那些需要与屏幕刷新同步的图形渲染任务,例如动画和游戏的渲染。由于它与屏幕刷新率紧密结合,所以可以提供流畅的视觉体验。 CADisplayLink与NSTimer的首要区别在于它们的触发时机。NSTimer...
创建`NSTimer`通常使用`scheduledTimerWithTimeInterval`方法,这个方法接受四个参数:时间间隔(interval)、目标(target)、选择器(selector)和用户信息(userInfo)。例如: ```swift let timer = Timer....
在这个项目中,开发者可能使用了`UIView`的动画方法来创建旋转动画,比如`animate(withDuration:animations:)`或`CAAnimation`中的`CABasicAnimation`,这些可以实现视图属性的平滑变化,从而达到旋转动画的效果。...
### NSTimer 使用 文档说明详解 #### 一、前言 在iOS开发中,`NSTimer`是一个非常实用且常见的类,它可以帮助开发者实现定时任务的功能。本文将深入解析`NSTimer`的使用方法,包括如何创建定时器、设置定时器的...
除了`NSTimer`外,还有其他定时器选项,如`CADisplayLink`(主要用于与屏幕刷新同步的动画)和GCD的`DispatchSourceTimer`(更灵活,支持精确的定时)。选择哪种定时器取决于具体需求,例如性能、精度和内存管理。 ...
7. **使用 GCD 的 Timer**:另一种替代方案是使用GCD的 `DispatchSourceTimer`,它提供了更多的控制和更少的内存管理问题,但使用起来比 `NSTimer` 稍复杂。 8. **考虑 `tableView(_:estimatedHeightForRowAt:)` 和...
详细讲解CADisplayLink和NSTimer的区别。
在iOS开发中,NSTimer常用于实现动画、心跳检测、轮询数据等任务。但是,当应用进入后台时,除非特别设置,NSTimer会暂停工作。因此,对于需要在后台继续运行的任务,可能需要使用其他技术如Background Fetch或Push ...
在这个项目中,我们关注的是如何利用`UIScrollView`与`UIPageControl`以及`NSTimer`来实现一个自动循环滑动的效果。下面我们将详细探讨这些知识点。 1. **UIScrollView 循环滑动** 在`UIScrollView`中实现循环滑动...
可以使用`CADisplayLink`或者`NSTimer`来精确控制动画的时间和帧率。 **代码实现** 在`WeiXinBarCodeImitate 2`这个子文件中,可能会包含实现这一动画效果的具体代码。这可能包括创建条形码视图,设置初始位置,...
NSTimer-Blocks, 在NSTimer上提供块功能,简单分类 自述文件NSTimer上非常简单的类别,它可以使用块。工作原理我认为如果你使用的是一个块,你可以能不需要将任何用户指定的对象传递到计时器。 你只要从街区里得到你...
模仿腾讯新闻图片频道的图片浏览的幻灯片效果.
在iOS开发中,`NSTimer` ...总的来说,`NSTimer`结合适当的视图操作和动画,可以有效地实现信息轮播功能。在实际开发中,你可能还需要考虑其他因素,如错误处理、界面交互等,但上述内容为你提供了一个基本的实现框架。
下面我们将深入探讨核心动画的基本概念、图片旋转的关键技术和无限循环滚动的实现方法。 一、核心动画基础 核心动画是iOS中的一个底层动画框架,它负责处理视图的渲染和动画。通过核心动画,开发者可以创建出流畅、...
贝塞尔曲线是一种在计算机图形学中广泛使用的数学工具,它能够帮助我们精确地控制曲线的形状,从而实现各种复杂的动画路径。 首先,我们需要了解贝塞尔曲线的基本概念。贝塞尔曲线由控制点和起点、终点决定,分为...
nstimer 是 iOS 开发中一个常用的工具,...正确理解和使用 NSTimer 可以帮助开发者实现各种定时功能,比如倒计时、动画效果、网络请求重试等。在实际项目中,一定要记住在适当的时候停止并释放定时器,避免内存泄漏。