簡體   English   中英

使用計時器逐漸旋轉UIImageView

[英]Rotate UIImageView Gradually using a timer

我試圖使用計時器逐漸旋轉UIImageView,這段代碼旋轉它,但它似乎不是圍繞圖像中心旋轉,以及將CGAffineTransformMakeRotation添加到我的代碼似乎停止了所有其他代碼主要的“方法

#define radians(degrees) (degrees * M_PI/180)

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.016 target:self selector:@selector(main) userInfo:nil repeats:YES];
-(void)main{
rotate++;
uiImageView.transform = CGAffineTransformMakeRotation(radians(rotate));
uiImageView.center = CGPointMake(uiImageView.center.x+1, uiImageView.center.y);
}

嘗試這個 :

開始動畫:

  CABasicAnimation *rotation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
  rotation.fromValue = [NSNumber numberWithFloat:0];
  rotation.toValue = [NSNumber numberWithFloat:(2*M_PI)];
  rotation.duration = 1.0;// Speed
  rotation.repeatCount = HUGE_VALF;// Repeat forever.
  [imgViewCube.layer addAnimation:rotation forKey:@"Spin"];

停止動畫:

  [imgViewCube.layer removeAnimationForKey:@"Spin"];

您可以慢慢旋轉指定動畫的持續時間

 NSTimeInterval duration = 1.5;
[UIView animateWithDuration:duration animations:^
{
    // set the final transform/freame/center here
    uiImageView.transform = CGAffineTransformMakeRotation(radians(rotate));
    uiImageView.center = CGPointMake(uiImageView.center.x+1, uiImageView.center.y);

} completion:^(BOOL finished)
 {
     NSLog(@"animation completed");
 }];

你可以做這樣的事情

// this spin completes 360 degrees every 2 seconds
    [UIView animateWithDuration:1.0f
                          delay:0.0f
                        options: UIViewAnimationOptionRepeat
                     animations: ^(void){
                         uiImageView.transform = CGAffineTransformRotate(uiImageView.transform, M_PI / 2);
                     }
                     completion:NULL];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM