import <QuickLook/QuickLook.h>
QLPreviewControllerDelegate,QLPreviewControllerDataSource
-
(void)addQLPreviewVC {
QLPreviewController *QLPreviewVC = [[QLPreviewController alloc] init];
QLPreviewVC.view.frame = self.view.bounds;
QLPreviewVC.dataSource = self;
QLPreviewVC.delegate = self;
if([[UIDevice currentDevice].systemVersion floatValue] >= 10.0) {
[self addChildViewController:QLPreviewVC];QLPreviewVC.currentPreviewItemIndex = 0;}
[self.view addSubview:QLPreviewVC.view];
} (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller {
return 1;
}-
(id<QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index {
//根據(jù)文件名判斷文件類型
NSRange pointRange = [self.fileName rangeOfString:@"."];
NSString *subName;
if (pointRange.location>0 && pointRange.location < self.fileName.length-2) {
subName = [self.fileName substringFromIndex:pointRange.location+1];
}
if (subName.length > 3 && [subName containsString:@"#"]) {
subName = [subName substringToIndex:3];
}
if ([subName isEqualToString:@"txt"]&&[[UIDevice currentDevice].systemVersion floatValue] < 9.0) {//使用QLPreviewController展示TXT等文檔時,Windows下生成的UTF-8格式的文件會出現(xiàn)中文(以及其他特殊字符)亂碼的問題。QLPreviewController只有在UTF16的編碼下才能正確顯示中文,需要在展示文件之前將文件的編碼改為UTF16 //需針對ANSI編碼和Unicode編碼分別進行解碼 //處理txt格式內容顯示有亂碼的情況 NSData *fileData = [NSData dataWithContentsOfFile:self.filePath]; //判斷編碼如果已經(jīng)是NSUTF16StringEncoding編碼,則isUNICODE與isANSI為空。 //判斷是UNICODE編碼 NSString *isUNICODE = [[NSString alloc] initWithData:fileData encoding:NSUTF8StringEncoding]; //還是ANSI編碼(-2147483623,-2147482591,-2147482062,-2147481296)encoding 任選一個就可以了。 NSString *isANSI = [[NSString alloc] initWithData:fileData encoding:-2147483623]; if (isUNICODE) { NSString *retStr = [[NSString alloc]initWithCString:[isUNICODE UTF8String] encoding:NSUTF8StringEncoding]; NSData *data = [retStr dataUsingEncoding:NSUTF16StringEncoding]; [data writeToFile:self.filePath atomically:YES]; } else if(isANSI){ NSData *data = [isANSI dataUsingEncoding:NSUTF16StringEncoding]; [data writeToFile:self.filePath atomically:YES]; }}
return [NSURL fileURLWithPath:self.filePath];
}
/*
- 這個方法可不實現(xiàn)
*/
- (void)previewControllerWillDismiss:(QLPreviewController *)controller {
}