iOS快速预览——QuickLook
2016-09-30 本文已影响304人
Snoopy008
好久没碰iOS了, 前几天回顾了一下之前所做的项目,发现有一些新奇的东西。今天我问来讲讲QuickLook。这个功能用的比较少,但是如果需要用它的地方那一定是最简洁的实现形式。
Snip20160930_4.png我们先来看看效果
音乐.png 图片.png Excel表格.png看看是如何实现的,此处我是将它与UITableView结合使用的。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self quickLookFileAtIndex:indexPath.row];
}
- (void)quickLookFileAtIndex:(NSInteger)index{
QLPreviewController *previewController =[[QLPreviewController alloc]init];
previewController.delegate=self;
previewController.dataSource=self;
[previewController setCurrentPreviewItemIndex:index];
[self presentViewController:previewController animated:YES completion:nil];
}
当点击表格的行就会触发。
但是还要实现QLPreviewController的两个代理:QLPreviewControllerDelegate、QLPreviewControllerDataSource
//QuickLook文件数量
-(NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller{
return attachmentModels.count;
}
//QuickLook代理
-(id<QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index{
JFAttachmentModel *attachmentModel = attachmentModels[index];
NSString *pathDocuments = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *filePath = [NSString stringWithFormat:@"%@/file", pathDocuments];
NSString *sandBoxFilePath = [filePath stringByAppendingPathComponent:attachmentModel.fileName];
return [NSURL fileURLWithPath:sandBoxFilePath];
}
我这里将所有的文件都存在了文件沙盒里了,根据文件名去找文件。
是不是很简单,几句简单的代码就可以搞定手机上大部分格式文件的预览。
结语##
QuickLook几乎可以搞定几乎所有的文件,除了图片、音乐,视频、PDF、Word等都是可以。但是其可定制部分比较少,样式比较单一。
欢迎大神指正。