使用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. **视图旋转**:旋转动画涉及到视图的transform属性,尤其是`CGAffineTransformMakeRotation`函数的应用。传入弧度值,视图会绕着自己的中心点旋转相应角度。 4. **视图翻转**:翻转效果通常用于展示视图的前后...
在代码实现上,开发者可能使用了CADisplayLink或者NSTimer来控制动画的帧率,确保动画流畅且节省系统资源。 创建这样一个加载动画轮子,开发者可能会使用以下步骤: 1. **创建视图**:首先,创建一个自定义UIView...
例如,如果我们想要一个转盘从当前位置开始匀加速旋转,然后在接近目标角度时匀减速,我们可以使用`CADisplayLink`或者`NSTimer`来控制动画的时间间隔,通过逐渐增加旋转速度达到加速的效果,而在接近目标角度时逐渐...
在iOS开发中,动画是为用户界面添加...提供的"GraphicsAnimation"源代码应包含具体的示例和实现细节,帮助开发者深入理解这些概念。在Mac环境下解压并运行这个项目,将有助于更好地学习和掌握iOS图形和动画的开发技术。
3. **旋转过渡**:利用CGAffineTransformMakeRotation函数,让视图绕某一轴旋转,达到翻转效果,为用户带来新颖的视觉体验。 4. **缩放过渡**:改变视图的scale属性,实现放大或缩小的动画,使轮播图看起来更有立体...
例如,可以使用CGAffineTransformScale、CGAffineTransformRotate和CGAffineTransformTranslate等方法,或者直接设置CGAffineTransformMakeRotation来实现旋转,达到翻转的效果。如果要实现定时翻转,可以结合...
//一般使用bounds不设置x和y只设置宽和高 //center是相对于其父视图而言的,是CGpoint类型 _vi.bounds=CGRectMake(0, 0, 200, 200); // vi.center=CGPointMake(160, 240); _vi.center=_window.center; //arc4...