2012-11-23 97 views
0

我有7個圖像,我試圖淡入/出1 ImageView。我已經將所有圖像存儲在一個數組中,然後有一個循環來顯示每個圖像並淡入下一個,但是,當我運行程序時,只顯示最後2張圖像。任何想法,爲什麼這是?以及如何解決它?代碼如下。與UIImageView上的動畫故障

imageArray = [NSArray arrayWithObjects: 
       [UIImage imageNamed:@"image 0.jpg"], 
       [UIImage imageNamed:@"image 1.jpg"], 
       [UIImage imageNamed:@"image 2.jpg"], 
       [UIImage imageNamed:@"image 3.jpg"], 
       [UIImage imageNamed:@"image 4.jpg"], 
       [UIImage imageNamed:@"image 5.jpg"], 
       [UIImage imageNamed:@"image 6.jpg"], 
       nil]; 
      self.imageview.backgroundColor = [UIColor blackColor]; 
       self.imageview.clipsToBounds = YES; 

int count = [imageArray count]; 
for (int i = 0; i <count-1 ; i++) 
{ 
    UIImage *currentImage = [imageArray objectAtIndex: i]; 
    UIImage *nextImage = [imageArray objectAtIndex: i +1]; 
    self.imageview.image = [imageArray objectAtIndex: i]; 
    [self.view addSubview:self.imageview]; 
    CABasicAnimation *crossFade = [CABasicAnimation animationWithKeyPath:@"contents"]; 
    crossFade.duration = 5.0; 
    crossFade.fromValue = (__bridge id)(currentImage.CGImage); 
    crossFade.toValue = (__bridge id)(nextImage.CGImage); 
    [self.imageview.layer addAnimation:crossFade forKey:@"animateContents"]; 
    self.imageview.image = nextImage; 

}; 

回答

1

需要注意以下幾點:

1)你是在具有每個轉換之間沒有延遲一個循環同步做的一切,有一個在動畫化是沒有意義的,如果下一次循環將被替換下一個等等,直到最後2.另外,你每次都將你的imageView作爲子視圖添加,也是不必要的。

2)您正在更改imageView的.image屬性,然後更改圖層的內容。不妨使用UIView並具有相同的效果。

我的建議是製作一種方法從一個圖像切換到另一個圖像,並且每隔x秒鐘調用一次函數,直到您全部通過它們。

編輯:對於未來:

self.imageview.backgroundColor = [UIColor blackColor]; 
self.imageview.clipsToBounds = YES; 

是完全沒有必要的:)

.backgroundColorUIImage您顯示繪製在。

.clipsToBoundsUIImageView默認行爲(你的形象它縮小/擴大它的規模,但從來沒有畫外)