iOS 開發顯示文件的兩種方法
在本篇文章中,介紹開啟檔案的兩種方法:
一.利用UIWebView
使用UIWebView物件顯示文件時在iOS中使用最多的解決方案。
//開啟PDF文件
[selfopenFile:@"PDF_SEHistory.pdf"type:@"pdf"];
//開啟word文件
[selfopenFile:@"file.doc"type:@"msword"];
其中第一個引數為檔名,需包含字尾;第二個引數為對應檔案型別的MIMEType
-(void)openFile:(NSString *)fileName type:(NSString *)type
{
NSString
NSData *fileData = [[NSDataalloc] initWithContentsOfFile:filePath];
[self.webViewloadData:fileData MIMEType:[NSStringstringWithFormat:@"application/%@",type]textEncodingName:@"UTF-8"baseURL:nil];
}
常見檔案的MIMEType:
MIMEType extension
application/msword doc
application/pdf pdf
application/vnd.ms-powerpoint ppt
image/jpeg jpg/jpeg/jpe
image/gif gif
text/plain txt
video/mpeg mpeg
audio/mpeg mp3
更多MIMEType
二.利用QuickLook框架
QuickLook支援許多文件格式的顯示,例如Microsoft Word,Excel和PowerPoint。
在開啟檔案的類中需啊喲匯入QuickLook框架的標頭檔案:#import<QuickLook/QuickLook.h>,並使這個類遵從QLPreviewControllerDataSource 和QLPreviewControllerDelegate協議。
#pragma mark - QLPreviewControllerDelegate
-(NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller
{
return1;//返回需要開啟文件的數目,這裡我們只打開一個文件,所以返回1
}
#pragma mark - QLPreviewControllerDataSource
-(id<QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index
{
NSString *path = [[NSBundlemainBundle] pathForResource:@"PDF_SEHistory"ofType:@"pdf"];
return [NSURLfileURLWithPath:path];//返回一個通過NSURL構造的QLPreviewItem物件
}
[selfpresentViewController:self.previewContrilleranimated:YEScompletion:nil];
使用QuickLook框架需要注意的是,當QLPreviewItem正在顯示的時候,這個框架會在導航控制器會在導航控制中自動建立一個按鈕,以允許使用者通過Email傳送和列印這個文件。
三.兩者的區別
UIWebView顯示文件非常消耗記憶體,當應用執行記憶體不足時,可能會導致崩潰。
iOS 技術交流群:488530658
相關推薦
iOS 開發顯示文件的兩種方法
在本篇文章中,介紹開啟檔案的兩種方法: 一.利用UIWebView 使用UIWebView物件顯示文件時在iOS中使用最多的解決方案。 //開啟PDF文件 [selfopenFile:@"PDF_SEHistory.pdf"type:@"pdf"
【Qt開發】Qt中顯示影象的兩種方法對比
在Qt中處理圖片一般都要用到QImage類,但是QImage的物件不能夠直接顯示出來,要想能看到圖片,初步發現有兩種方法。 一、QImage轉QPixmap,然後用QLabel::setPixmap() image=new QImage("D:/Temp/XX.jpg
迴文日期(兩種方法,牛客)
//兩種方法,第一種是我自己的複雜無腦版,第二種是大神的方法 //@第一種: /* 思路:每一個日期都檢驗一次(沒第二種方法好) */ #include<bits/stdc++.h> #define ll long long using namespace std; int
回文日期(兩種方法,牛客)
main mes 答案 約會 會有 style turn 回文 之間 //兩種方法,第一種是我自己的復雜無腦版,第二種是大神的方法 //@第一種: /* 思路:每一個日期都檢驗一次(沒第二種方法好) */ #include<bits/stdc++.h&g
myabtis入門級03——mybatis開發dao層的兩種方法
一、先來談談SqlSession的適用範圍 通過SqlSessionFactoryBuilder建立會話工廠SqlSessionFactory。 將SqlSessionFactoryBuilder當成一個工具類使用即可,不需要使用單例管理SqlSessionFactoryBu
python 讀取並顯示圖片的兩種方法
在 python 中除了用 opencv,也可以用 matplotlib 和 PIL 這兩個庫操作圖片。 原文地址 一、matplotlib 1. 顯示圖片 import matplotlib.pyplot as plt # plt 用於顯示圖片 import mat
java判斷迴文的兩種方法
第一種:面向過程:從字串Str.length()/2開始向兩端移動進行對比 ,boolean用來確定一個返回值判斷是否迴文Scanner input = new Scanner(System.in); try{ System.out.println("Enter a
OpenCV在Qt中顯示視訊的兩種方法
參考:http://blog.csdn.net/augusdi/article/details/8865541 程式碼如下: 注意,要在ui介面上放置一個“Vertical Layout”控制元件,調整到合適大小 #include <QtWidgets/QMainWi
判斷字串是不是迴文的兩種方法
方法一:用棧存取前半截數,然後與後半截挨個比較。 #include<stdlib.h> #include<stdio.h> #include<string.h> int main(int argc,char* argv[]) { ch
IOS延長啟動畫面的兩種方法
1. 在ViewController的viewDidLoad方法裡延時。 @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; //[NSThread slee
WinForm顯示窗體的兩種方法
Form.Show() 無模式窗體 form.Modal=false Form.ShowDialog() 模式窗體form.Modal =true (注:modal屬性只有在窗體load事件中或者之後才可以查出,窗體建立之前時無法得知此案時方式的,因此在窗體建構函式中Mo
DataGridView顯示資料的兩種方法
1.簡單介紹 DataGridView空間是我們常用的顯示資料的控制元件,它有極高的可配置性和可擴充套件性。 2.顯示資料 DataGridView顯示資料一般我們常用的有兩種方法,一種是直接
ios 跳轉AppStore的兩種方法,以及遇到的坑
iOS跳轉appStore的兩種方法網上已經有很多的部落格進行講解了,主要是app內跳轉相關網頁,和跳出app,跳轉到AppStore。相關的部落格大家可以參看參考部落格 為了防止參考部落格實效,我把相關程式碼copy了一下,希望大家不要介意。 1,
IOS自帶Email的兩種方法
IOS系統框架提供的兩種傳送Email的方法:openURL 和 MFMailComposeViewController。藉助這兩個方法,我們可以輕鬆的在應用里加入如使用者反饋這類需要傳送郵件的功能。 1.openURL 使用openURL呼叫系統郵箱客戶端是我們在
iOS 刪除UITableView 行的兩種方法
大家都知道,刪除行時table會呼叫其Data Source方法: - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPat
python實現讀取並顯示圖片的兩種方法(轉載)
在 python 中除了用 opencv,也可以用 matplotlib 和 PIL 這兩個庫操作圖片。本人偏愛 matpoltlib,因為它的語法更像 matlab。 一、matplotlib 1. 顯示圖片 1 2 3 4
使用Python生成源文件的兩種方法
mob zhang mod pri tid 串接 數字 能夠 package 利用Python的字符串處理模塊,開發者能夠編寫腳本用來生成那些格式同樣的C、C++、JAVA源程序、頭文件和測試文件,從而避免大量的反復工作。本文概述兩種利用Python string類生成
oracle rename數據文件的兩種方法
ati oar online 技術 off target pen 分類 alt oracle rename數據文件的兩種方法 2012-12-11 20:44 10925人閱讀 評論(0) 收藏 舉報 分類: oracle(98) 版權聲明:本文為博主原創
自制按鈕圖標的兩種方法: image sprite和svg字體文件
輸出 圖標 int uil pac 設置 定制 方法 ets 用image sprite和svg字體文件這兩種方法,都能夠極大地減少小圖形文件的數量, 從而減少服務器請求和帶寬需求。提高網頁的響應速度。 一、建立SVG字體文件 iconmoon 是一個在線工具,可以上傳
node服務器中打開html文件的兩種方法
lse line targe edi not ref code tex fs模塊 方法1:利用 Express 托管靜態文件,詳情查看這裏 方法2:使用fs模塊提供的readFile方法打開文件,讓其以text/html的形式輸出。 代碼: var express = r