需要在UICollectionView中显示视频和图像。
如何在UICollectionView中显示视频和图像的数量。我正在使用JSON从服务器下载资产。
以下是服务器下载图片的代码:
NSDictionary *dictImage = [arrImages objectAtIndex:indexPath.item];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:[dictImage objectForKey:@“imgURL"]]];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
[cell.imgGallery setImage:[UIImage imageWithData:imgData]];
}];
以下是此屏幕的示例链接。
答案 0 :(得分:5)
就个人而言,我不会将实际视频加载到单元格中的播放器中。您应该生成缩略图图像并使用顶部的播放图标。
然后,当用户选择视频单元格时,您可以在集合视图的顶部显示视频播放器。
您可以同时使用的活动AVPlayers的数量有限,它们将消耗更多的内存和资源。滚动包含AVPlayers的大量单元格会真正减慢单元格渲染速度,最终可能会导致应用程序崩溃
答案 1 :(得分:0)
从SDWebImage
加载缩略图图片,点击播放按钮,播放任何视频播放器的视频。
在单元格上播放视频时要小心,在播放新视频之前删除之前的视频。
SDWebImage用法 -
[cell.imgGallery sd_setImageWithURL:[NSURL
URLWithString:@"image_url"]
placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
答案 2 :(得分:0)
对于图像显示,请使用SDWebImage - 异步图像下载。
#import <SDWebImage/UIImageView+WebCache.h>
[imageView sd_setImageWithURL:[NSURL
URLWithString:@"http://www.example.com/path/to/image.jpg"]
placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
对于视频显示,请在该videoImage单元格上的Video and Put Play图标中获取placeHolder图像。
AVURLAsset *asset1 = [[AVURLAsset alloc] initWithURL:_videoFileURL options:nil];
AVAssetImageGenerator *generate1 = [[AVAssetImageGenerator alloc] initWithAsset:asset1];
generate1.appliesPreferredTrackTransform = YES;
NSError *err = NULL;
CMTime time = CMTimeMake(1, 2);
CGImageRef oneRef = [generate1 copyCGImageAtTime:time actualTime:NULL error:&err];
UIImage *one = [[UIImage alloc] initWithCGImage:oneRef];
imgViewVideo.image = one;
点击视频打开AVVideoPlayer
AVPlayerViewController *playerViewController = [[AVPlayerViewController alloc]init];
playerViewController.player = [[AVPlayer alloc]initWithURL:_videoFileURL];
[self presentViewController:playerViewController animated:YES completion:nil];
playerViewController.view.frame = self.view.frame;
[playerViewController.player play];