欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

ios開發(fā)范例實戰(zhàn)pdf,ios類方法和實例方法

iOS PDF文件預(yù)覽的幾種方法

前段時間公司項目加了許多關(guān)于PDF文件操作的需求,其中包括 PDF文檔的預(yù)覽 、 PDF文件格式轉(zhuǎn)換 、 從其他App獲取文件 、 PDF文檔的批注與修改 。這篇文章我會先記錄下PDF文檔的幾種預(yù)覽方式。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名注冊網(wǎng)站空間、營銷軟件、網(wǎng)站建設(shè)、保亭黎族網(wǎng)站維護(hù)、網(wǎng)站推廣。

先看效果:

蘋果的webView組件可以預(yù)覽各種格式的文件,支持在線預(yù)覽和本地預(yù)覽,相比于安卓的webView控件簡直就是一大神器,UIWebview使用起來也非常簡單

QLPreviewController 是系統(tǒng)自帶的文件預(yù)覽控制器,QL全稱 quick look 快速查看的意思,要使用QLPreviewController先得在文件中導(dǎo)入頭文件 #import QuickLook/QuickLook.h ,并且實現(xiàn)其代理方法 QLPreviewControllerDelegate

使用UIDocumentInteractionController預(yù)覽文件也得遵循 UIDocumentInteractionControllerDelegate 代理方法,UIDocumentInteractionController本身并不是一個控制器類,它直接繼承 NSObject ,所以就不能直接push或者模態(tài)跳轉(zhuǎn)了,所以需要使用它類方法提供的模態(tài)跳轉(zhuǎn)函數(shù)

利用 CGContexDrawPDFPage 和 UIPageViewController 實現(xiàn)翻頁瀏覽功能,這種方法只能加載本地的PDF文件,但是顯示效果比其他幾種炫酷很多。具體使用方法參考 iOS開發(fā)筆記——PDF的顯示和瀏覽 這篇博客。也可以參考本文的 Demo

關(guān)于PDF文檔的預(yù)覽其實不止上文介紹的幾種方法,還可以通過第三方SDK來加載并對PDF文檔進(jìn)行批注與修改,等有時間我會放在后面一起介紹。

iOS PDFKit 開發(fā)指北

2017年夏天,在蘋果全球開發(fā)者大會(WWDC)上,蘋果公司終于推出了針對于 iOS 的 PDFKit 支持。PDFKit 自從 MacOS 10.4 以來一直在 AppKit for MacOS 中。但 UIKit 卻遲遲得不到支持,盡管蘋果公司之前在 iBooks 和 Mail 中使用過 PDFKit , 但是該框架并未向開發(fā)人員開房。

PDFKit 包含了大量關(guān)于 PDF 相關(guān)的功能,例如,打開,修改,繪圖和保存 PDF ,也包含了搜索文本。在 iOS 11 后,蘋果終于開放了 PDFKit 。目前(雖然離 PDFKit 發(fā)布已經(jīng)過了一年多),但是目前中文資料和 Demo 確實比較少,下面筆者就帶著大家簡單的了解一下 PDFKit。

主要核心功能如下:

PDFView

PDFDocument

PDFPage

PDFAnnotation

讓我看到你們的雙手, put your hands up!

引入 #import PDFKit/PDFKit.h ,創(chuàng)建 PDFView ,創(chuàng)建之前,首先要創(chuàng)建 PDFDocument ,這里通過文件路徑 URl 進(jìn)行創(chuàng)建。

創(chuàng)建 PDFView ,將 PDFDucument 對象賦給 PDFView。

至此,就實現(xiàn)了 PDF 的讀取及顯示。

首先獲取 PDFDocument 的屬性 PDFPage :

通過 PDFPage 的對象方法,可以獲取 PDF 的縮略圖,這里需傳入圖片的 size:

創(chuàng)建 collectionViewCell ,通過 collectionView 就可以實現(xiàn)一個大致的功能。

點(diǎn)擊跳轉(zhuǎn)

獲取 cell 的點(diǎn)擊事件,取出所點(diǎn)擊的 PDFPage 對象,用下述方法進(jìn)行跳轉(zhuǎn):

PDFOutline 是一個層級關(guān)系的對象,他表示 PDF 的大綱(也就是我們常用的書簽)。每個 PDFOutline 對象都可通過 childAtIndex: 方法獲取出他的孩子對象, 注意 ,這里需要先判斷 numberOfChildren ,以確定該 outline 對象存在多少個孩子節(jié)點(diǎn),避免下標(biāo)超界引發(fā)的崩潰。

實現(xiàn)大綱功能

從 PDFDocument 中獲取 PDFOutline

遍歷 outline 孩子節(jié)點(diǎn)(默認(rèn)只遍歷一層)

當(dāng)點(diǎn)擊節(jié)點(diǎn)時,判斷有無孩子節(jié)點(diǎn),進(jìn)行當(dāng)前數(shù)組的新增或刪除。

這里搜索功能主要靠下述方法實現(xiàn)

調(diào)用此方法之前,首先需將 PDFDocument 設(shè)置代理,通過 PDFDocument 的代理進(jìn)行回調(diào)。獲取 PDFSelection 對象,

再根據(jù) selection 對象顯示搜索內(nèi)容。

調(diào)用下述方法即可對 PDFView 進(jìn)行縮放,

實現(xiàn)雙擊縮放或還原:

這里通過設(shè)置 pdfView 的 scaleFactor 屬性即可實現(xiàn), 注意 : scaleFactorForSizeToFit 屬性是當(dāng)前 PDF 充滿屏幕的比例。

GitHub :

本文原地址:

iOS項目開發(fā)MVVM架構(gòu)實踐(第一篇:Router協(xié)議)

項目的開始我們必然要面臨一些準(zhǔn)備工作來做統(tǒng)籌布局(如: 網(wǎng)絡(luò)API的封裝、數(shù)據(jù)處理與UI布局的選擇等等),我們這邊選擇的是Alamofire、ObjectMapper、AlamofireObjectMapper、ReactiveCocoa作為MVVM分層架構(gòu)的現(xiàn)實:

1)運(yùn)用ObjectMapper達(dá)到數(shù)據(jù)之間的相互轉(zhuǎn)化;

2)結(jié)合Alamofire、ObjectMapper、AlamofireObjectMapper與ReactiveCocoa封裝網(wǎng)絡(luò)接口讓數(shù)據(jù)可傳遞、可監(jiān)聽,為調(diào)用API接口服務(wù)。

3)通過viewmodel的屬性(Property)和動作(Action)給view層提供必要的數(shù)據(jù)和執(zhí)行的動作。

上面大致介紹了整個架構(gòu)的現(xiàn)實原理,接下來我們要介紹的網(wǎng)絡(luò)接口封裝的第一步Router協(xié)議的實現(xiàn)。Router協(xié)議作為網(wǎng)絡(luò)層現(xiàn)實的一部分,目的就是把API地址轉(zhuǎn)化為更加容易理解的Router名稱供其他地方使用,如:

這就是一個登錄API的現(xiàn)實,RouterConvertible 就是我們所要現(xiàn)實的router協(xié)議,我們要讓router協(xié)議具備網(wǎng)絡(luò)請求的必要屬性,實現(xiàn)如下:

從實際上考慮除了urlPath需要外部提供,headers和paramters是可選的,method和parameterEncoding可以給與默認(rèn)值,在需要的時候在作調(diào)整,那么如何讓這個協(xié)議現(xiàn)實這樣的功能呢?

swift為我們提供了協(xié)議擴(kuò)展,讓我們輕松現(xiàn)實這樣的功能,如下:

綜上所述,我們的Router協(xié)議的實現(xiàn)已大功告成!

當(dāng)前題目:ios開發(fā)范例實戰(zhàn)pdf,ios類方法和實例方法
文章轉(zhuǎn)載:http://chinadenli.net/article19/dsgdedh.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)網(wǎng)頁設(shè)計公司網(wǎng)站收錄App設(shè)計品牌網(wǎng)站制作網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)