2011-07-08 61 views
0

這裏是我試圖完成在這裏。我想要一個圖像從屏幕的頂部開始,然後轉到機箱,然後當它到達機箱時,它會再次返回。我能夠通過這樣做得到形象Objective C - 如果在CGRectmake上聲明?

- (void)viewDidLoad { 
[super viewDidLoad]; 


[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:4.0]; 
[image setFrame:CGRectMake(0, 0, 30, 1500)]; 
[UIView commitAnimations]; 


if ([image setFrame:CGPoint =(0, 0, 30, 1500)]) { 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:4.0]; 
    [image setFrame:CGRectMake(0, 0, 30, 0)]; 
    [UIView commitAnimations]; 
} 
} 

這if語句不工作,我不知道如何使這項工作。我很喜歡使用積分。

或者也許是一個while循環?有任何想法嗎? 非常感謝!

有一個好的一天

回答

0

此代碼,因爲這條線是無效

if ([image setFrame:CGPoint =(0, 0, 30, 1500)]) { 

我相信你的意思比較視圖

if (CGPointEqualToPoint(image.frame.origin, CGPointMake(0, 0))) { 

您的圖片寬度也設置爲的位置將不會一開始運行1500在看起來不太正確的地方

這將無法正常工作的最終原因是因爲UIView將查看位置的淨變化並意識到該觀點不動,因此它不會做任何事情。

你需要做的也許是使用塊這樣

float duration = 0.5; 
int delay = 0; 

[UIView animateWithDuration:duration 
         delay:delay 
        options:UIViewAnimationCurveLinear 
       animations: ^{ 
        image.frame = CGRectMake(0, 460, 30, 30); 
       } completion:^(BOOL finished) { 

        [UIView animateWithDuration:duration 
              delay:delay 
             options:UIViewAnimationCurveLinear 
             animations: ^{ 
              image.frame = CGRectMake(0, 0, 30, 30); 
             } completion:nil]; 
       }]; 
什麼
2

這行有點糊塗:

if ([image setFrame:CGPoint =(0, 0, 30, 1500)]) { 

-[NSView setFrame]功能視圖的框架。它不能被用來檢查當前幀是什麼 - 對於這一點,你會使用類似:

if (CGRectEqualToRect([image frame], CGRectMake(0, 0, 30, 1500))) { 

它使用-[NSView frame]函數來獲得當前幀,並CGRectEqualToRect比較它。