内随机延时我想创建一个效果,这样我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:
和电池本身会采取其他的事情。