最近在項目開發中遇到下載附件文檔預覽需求,在這里總結一下我的實現方法
這里我總結了三種實現方法(1)用webView預覽(2)通過UIDocumentInteractionController實現跳轉(3)應用Quick Look系統框架,下面依次介紹各個方法實現
首先來看用webView這個比較常用,不做過多解釋,代碼如下:
_webView = [[UIWebView alloc]initWithFrame:self.view.bounds]; _webView.delegate = self; NSURLRequest *request = [NSURLRequest requestWithURL:_url1]; [_webView loadRequest:request]; [_webView setScalesPageToFit:YES]; [self.view addSubview:_webView];
第二種應用UIDocumentInteractionController實現方法如下:
//先初始化對象,以及設置彈出方式 _documentInt = [UIDocumentInteractionController interactionControllerWithURL:_url2]; [_documentInt setDelegate:self]; [_documentInt presentPreviewAnimated:YES]; [_documentInt presentOptionsMenuFromRect:CGRectMake(0, 0, 375, 667) inView:self.view animated:YES]; //然后實現相應代理方法 - (UIViewController*)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController*)controller { return self; } - (UIView*)documentInteractionControllerViewForPreview:(UIDocumentInteractionController*)controller { return self.view; } - (CGRect)documentInteractionControllerRectForPreview:(UIDocumentInteractionController*)controller { return self.view.frame; } //點擊預覽窗口的“Done”(完成)按鈕時調用 - (void)documentInteractionControllerDidEndPreview:(UIDocumentInteractionController*)_controller { [_documentInt dismissPreviewAnimated:YES]; }
第三種Quick Look,用這個方法需要導入QuickLook.FrameWork框架,代碼如下:
//初始化對象 QLPreviewController *myQlPreViewController = [[QLPreviewController alloc]init]; myQlPreViewController.delegate =self; myQlPreViewController.dataSource =self; [myQlPreViewController setCurrentPreviewItemIndex:0]; [self presentViewController:myQlPreViewController animated:YES completion:nil]; //實現代理方法 - (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller { return 1; } - (id)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index { // NSString *fileName = [self.listDic objectForKey:@"fileName"]; // NSString* path = [NSHomeDirectory()stringByAppendingPathComponent:[NSStringstringWithFormat:@"Documents/%@",fileName]]; return _url3; }