iOS在線文件預覽

在上一篇http://www.lxweimin.com/p/00e76c936121
中,我們了解了iOS本地文件預覽實現的幾種方式,接下來我們在上一篇的基礎之上來分析一下在線文件的預覽。

一、webView####

加載方法:

self.fileURLString = @“文件url地址”;  
openFileWebView = [[UIWebView alloc]initWithFrame:CGRectMake(0, 64, self.view.frame.size.width, self.view.frame.size.height)];  
openFileWebView.delegate = self;  
[openFileWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:self.fileURLString]]];  

代理方法:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType  
{  
      
      
    return YES;  
}  
#pragma mark - Web代理  
- (void)webViewDidFinishLoad:(UIWebView *)webView  
{  
    NSURL *targetURL = [NSURL URLWithString:self.fileURLString];  
      
    NSString *docPath = [self documentsDirectoryPath];  
    NSString *pathToDownloadTo = [NSString stringWithFormat:@"%@/%@", docPath, [targetURL lastPathComponent]];  
    NSFileManager *fileManager = [NSFileManager defaultManager];  
    BOOL hasDownLoad= [fileManager fileExistsAtPath:pathToDownloadTo];  
    if (hasDownLoad) {  
        self.fileURL = [NSURL fileURLWithPath:pathToDownloadTo];  
        QLPreviewController *qlVC = [[QLPreviewController alloc]init];  
        qlVC.delegate = self;  
        qlVC.dataSource = self;  
        [self.navigationController pushViewController:qlVC animated:YES];  
        //  
    }  
    else {  
        NSURL *targetURL = [NSURL URLWithString:self.fileURLString];  
          
        NSData *fileData = [[NSData alloc] initWithContentsOfURL:targetURL];  
        // Get the path to the App's Documents directory  
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
        NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder  
        [fileData writeToFile:[NSString stringWithFormat:@"%@/%@", documentsDirectory, [targetURL lastPathComponent]] atomically:YES];  
        NSURLRequest *request = [NSURLRequest requestWithURL:targetURL];  
        [openFileWebView loadRequest:request];  
    }  
      
    NSLog(@"webViewDidFinishLoad");  
}  
  
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error  
{  
    NSLog(@"didFailLoadWithError");       
}  

- (NSString *)documentsDirectoryPath {  
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
    NSString *documentsDirectoryPath = [paths objectAtIndex:0];  
    return documentsDirectoryPath;  
}  

我們根絕一個無誤的地址,就能打開一個文件了

在線.doc

二、QuickLook####

導入#import <QuickLook/QuickLook.h>
實現QLPreviewControllerDataSource,QLPreviewControllerDelegate
其具體實現方法如下:


QLPreviewController *qlController = [[QLPreviewController alloc]init];
qlController.delegate = self;
qlController.dataSource = self;
[qlController setCurrentPreviewItemIndex:0];
[self presentViewController:qlController animated:YES completion:nil];


- (id <QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index {  
    return self.fileURL;  
}  
  
- (void)previewControllerWillDismiss:(QLPreviewController *)controller {  
    NSLog(@"previewControllerWillDismiss");  
}  
  
- (void)previewControllerDidDismiss:(QLPreviewController *)controller {  
    NSLog(@"previewControllerDidDismiss");  
}  
  
- (BOOL)previewController:(QLPreviewController *)controller shouldOpenURL:(NSURL *)url forPreviewItem:(id <QLPreviewItem>)item{  
    return YES;  
}  
  
- (CGRect)previewController:(QLPreviewController *)controller frameForPreviewItem:(id <QLPreviewItem>)item inSourceView:(UIView * __nullable * __nonnull)view{  
    return CGRectZero;  
}  
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容