2014-12-19 71 views
1

內隨機延時我想創建一個效果,這樣我collectionviewcell(有一個ImageView的作爲IBOutlet中)將其加載圖像與隨機延遲。因此,例如,小區#1將已在2秒內顯示的圖像,而#2將於1秒,小區#3需要4數秒等故意加載的ImageView與UICollectionView細胞

我會怎麼做呢?我聽說過使用NSOperationQueue在的cellForRowAtIndexPath但不知道如何實現。

回答

1

如果您的圖片已經上市,你可以嘗試在你的cellForItemAtIndexPath方法給人一種隨機延遲:

UIImage *theImage = ...; //get your image 
int maxDelay = 4; 
int delayInSeconds = arc4random() % maxDelay; 
cell.imageView.image = theImage; 
cell.imageView.alpha = 0; 
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
     cell.imageView.alpha = 1; 
}); 

如果您的圖像不是可用內存,它需要被加載,你可能想看看this post如何異步加載圖像:

0

你可能對細胞的子類的方法來設置圖像,那麼該方法中調用另一個方法與隨機延遲到實際設置UIImageView's圖像。事情是這樣的:

- (void)delayedSetBackgroundImage:(UIImage *)image 
{ 
    [self performSelector:@selector(setBackgroundImage:) withObject:image afterDelay:(arc4random() % 5)]; 
} 

- (void)setBackgroundImage:(UIImage *)image 
{ 
    _myImageView.image = image; 
} 

所以後來在的cellForRowAtIndexPath你會打電話delayedSetBackgroundImage:和電池本身會採取其他的事情。