2012-03-14 37 views
0

我想製作一個動畫,它會改變我已經在應用程序中的一些圖片。UIImage視圖 - 動畫視圖邏輯錯誤xCode 4.2

經過四處尋找,我找到了一些對我來說很好的東西。下面

代碼:

- (void)viewDidLoad 
{ 

    [super viewDidLoad]; 
    UIImageView*animationView = [[UIImageView alloc] initWithFrame:self.view.frame]; 
    animationView.animationImages = [NSArray arrayWithObjects: 
            [UIImage imageNamed:@"photo1.jpg"], 
            [UIImage imageNamed:@"photo2.jpg"], 
            [UIImage imageNamed:@"photo3.jpg"], nil]; 

animationView.animationDuration = 5; 
animationView.animationRepeatCount = 0; 
[animationView startAnimating]; 
[self.view addSubview:animationView]; 
} 

所以即使這個偉大工程,對我來說,它給了我一個邏輯錯誤(黃色三角形符號)和它說 「‘animationView’的局部聲明隱藏實例變量」

即使我運行代碼,它做我想做它,我不明白爲什麼我有這個錯誤。

另外需要注意的是這發生,我已經聲明爲出口

和一個額外的問題,一個UIImage的內部:我怎樣才能添加淡入 - 淡出的效果呢?

在此先感謝

回答

2

您必須聲明UIImageView *animationView無論是作爲一個實例變量或屬性。

,因爲沒有需要重新申報animationViewUIImageView,因爲編譯器已經知道它,這就是爲什麼它給你的警告,你可以安全地刪除您的viewDidLoadUIImageView *部分。

因此,這將是這樣的:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    animationView = [[UIImageView alloc] initWithFrame:self.view.frame]; 
    animationView.animationImages = [NSArray arrayWithObjects: 
            [UIImage imageNamed:@"photo1.jpg"], 
            [UIImage imageNamed:@"photo2.jpg"], 
            [UIImage imageNamed:@"photo3.jpg"], nil]; 

    animationView.animationDuration = 5; 
    animationView.animationRepeatCount = 0; 
    [animationView startAnimating]; 
    [self.view addSubview:animationView]; 
} 
+0

這並工作,並解決了所有的邏輯錯誤與「「animationView的局部聲明隱藏實例變量「,它確實出現了一個新的邏輯錯誤」將保留對象分配給弱變量;對象將在分配後釋放「謝謝你的幫助,現在它根本不工作,它顯示模擬器上的白色屏幕而不是圖片改變 – Nick 2012-03-14 22:13:57

+0

我有零exp但是我認爲你必須將你的財產從「弱」轉變爲「強」或其他。至於淡入淡出的動畫,你到底想要如何發生? – 2012-03-14 23:36:33

+0

我希望每次出現圖像時都會淡入淡出,然後出現下一張圖像。 可以說這樣的東西*淡入。圖像1顯示淡出,淡入淡出圖像2顯示淡出.......這就是我想要它的工作 – Nick 2012-03-15 00:44:37

0

對於淡入淡出效果,你可以這樣做:

//Fade in 
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.5]; 
[animationView setAlpha:1]; 
[UIView commitAnimations]; 

//Fade out 
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.5]; 
[animationView setAlpha:0]; 
[UIView commitAnimations]; 
+0

我可以看到它淡入淡出,它只有一次它加載,然後它不會重複它自我,而圖像改變時,我做錯了什麼? – Nick 2012-03-14 22:22:42

+0

誰說過重複的任何事情?...如果你想要更復雜的動畫,你應該檢查[Core Animation framework](https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/CoreAnimation_guide/Introduction /Introduction.html#//apple_ref/doc/uid/TP40004514) – Alladinian 2012-03-15 08:37:46