2013-07-18 76 views
3

我動畫用於此目的的水平位置的的UIImageView的座標我用下面的代碼,我用的NSTimer獲得動畫的UIImageView

timer = [NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(onTimer) userInfo:nil repeats:YES]; 

-(void)onTimer 
{ 
    [UIView animateWithDuration:10.0f animations:^{ 
      //Moving_Cloud is an image view 
      Moving_Cloud.frame = CGRectMake(200.0f, 150.0f, Moving_Cloud.frame.size.width, Moving_Cloud.frame.size.height); 
      }]; 

} 

現在我面臨的問題是我需要得到的座標動畫時長後的「Moving_Cloud」
請幫我
在此先感謝。

+0

在動畫持續時間之後,幀是不是你設置的那個幀? – Jumhyn

回答

1

Abhijit Chaudhari從我以前的帖子中的評論我明白,你想要的不是「動畫持續時間後」的位置,而是位置期間的動畫。

如果我仍然不明白請澄清你的問題。 (或者給我買個新的大腦)

-(void) animateMe(){ 
    NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(onTimer:) userInfo:nil repeats:YES]; 
    [UIView animateWithDuration:10.0f animations:^{ 
     //Moving_Cloud is an image view 
     Moving_Cloud.frame = CGRectMake(200.0f, 150.0f, Moving_Cloud.frame.size.width, Moving_Cloud.frame.size.height); 
    }]; 
} 

-(void)onTimer:(id)sender{ 
    NSLog(@"Currently in x=%f", [[ddddd.layer presentationLayer] frame].origin.x); 
    NSLog(@"Currently in y=%f", [[ddddd.layer presentationLayer] frame].origin.y); 
} 
+0

感謝這個人幫助 –

1
[UIView animateWithDuration:10.0f animations:^{ 
    Moving_Cloud.frame = CGRectMake(200.0f, 150.0f, Moving_Cloud.frame.size.width, Moving_Cloud.frame.size.height); 
} completion:^(BOOL finished){ 
    CGPoint newPost = Moving_Cloud.frame.origin; 
    CGFloat xPos = newPost.x; 
    CGFloat yPos = newPost.y; 
    // do stuff ? 
}]; 

在動畫結束時,會觸發塊「completion:」。
通常你的圖像應該在x = 200,y = 150.

請注意那些座標是相對於它的superview(視圖環繞Moving_Cloud視圖)。

注:
按照慣例我建議改變 「Moving_Cloud」 到 「movingCloud」。
實例類在Objective-C的下限中開始。
也不要使用_,而是使用大寫字母。

+0

並記得檢查'完成'布爾'如果(完成){然後你做東西}' –

+0

@Martin Mangakian看到編輯的問題,我在每個時間間隔後得到相同的xPos和yPos –

+0

@AbhijitChaudhari我不明白你的問題。你能澄清一下嗎?你想要做什麼? –