iOS快速预览——QuickLook

好久没碰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)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等都是可以。但是其可定制部分比较少,样式比较单一。
欢迎大神指正。

你可能感兴趣的:(iOS快速预览——QuickLook)