內隨機延時我想創建一個效果,這樣我collectionviewcell(有一個ImageView的作爲IBOutlet中)將其加載圖像與隨機延遲。因此,例如,小區#1將已在2秒內顯示的圖像,而#2將於1秒,小區#3需要4數秒等故意加載的ImageView與UICollectionView細胞
我會怎麼做呢?我聽說過使用NSOperationQueue在的cellForRowAtIndexPath但不知道如何實現。
內隨機延時我想創建一個效果,這樣我collectionviewcell(有一個ImageView的作爲IBOutlet中)將其加載圖像與隨機延遲。因此,例如,小區#1將已在2秒內顯示的圖像,而#2將於1秒,小區#3需要4數秒等故意加載的ImageView與UICollectionView細胞
我會怎麼做呢?我聽說過使用NSOperationQueue在的cellForRowAtIndexPath但不知道如何實現。
如果您的圖片已經上市,你可以嘗試在你的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如何異步加載圖像:
你可能對細胞的子類的方法來設置圖像,那麼該方法中調用另一個方法與隨機延遲到實際設置UIImageView's
圖像。事情是這樣的:
- (void)delayedSetBackgroundImage:(UIImage *)image
{
[self performSelector:@selector(setBackgroundImage:) withObject:image afterDelay:(arc4random() % 5)];
}
- (void)setBackgroundImage:(UIImage *)image
{
_myImageView.image = image;
}
所以後來在的cellForRowAtIndexPath你會打電話delayedSetBackgroundImage:
和電池本身會採取其他的事情。