使用CATiledLayer優化PDF展示

2021-09-08 00:11:54 字數 1026 閱讀 5797

ios中提供了乙個非常好的pdf解析類庫,可以很方便地使用cgpdfdocumentref讀取pdf檔案內容。但是由於pdf檔案一般尺寸都比較大,一次性把內容展示出來,比較佔記憶體。為了優化展示而不浪費不必要的記憶體消耗,可以使用檢視uiview的calayer機制,可以使用catiledlayer把pdf頁面分成好幾個區域,展示哪個區域就呼叫哪個區域的資料,可以大大節省記憶體開銷。對大尺寸的影象,也可以使用這種原理來處理。

首先使用cgpdfdocumentref讀取pdf檔案,使用cgpdfdocumentgetpage方法獲取到指定頁的cgpdfpageref。

下面提供這個思路的主要**片段:

- (void)drawlayer:(calayer *)layer incontext:(cgcontextref)ctx

}以上**就顯示出pdf內容了。

繼續完善以上**。

由於pdf讀取一般速度比較慢,因此使用者會有乙個等待的時間,此時螢幕就會顯示空白,為了彌補這個不好看的效果,可以考慮在展示層calayer後增加乙個背景calayer。

//設定背景層

self.imagelayer = [calayer layer];

//設定層的影象        

self.imagelayer.contents = (id) youruiimage.cgimage;

//將背景層新增到檢視中去

[self.layer addsublayer:self.imagelayer];

另外,由於顯示pdf的速度也不一定很快,尤其在切換pdf頁面時。其實展示pdf最終希望是能夠看清楚內容,如果縮放的比例大小,看不清內容的話,這種展示對使用者來說也沒有多少實際意義。因此可以利用這點做一些技巧性的優化,當pdf縮放比例太小時,就不要顯示真正的pdf內容,而顯示乙個自己的影象,或者頁面縮圖也行。優化上面方法drawlayer:的**:

- (void)drawlayer:(calayer *)layer incontext:(cgcontextref)ctx

}else

}

jvm調優工具使用

要使用 visualgc 必須在遠端機上啟動jstatd 程式,否則會顯示 not supported for this jvm 錯誤 jstatd could not create remote object access denied j a.util.propertypermission j ...

超參尋優使用簡介

在機器學習裡,我們本質上是對損失函式進行最優化的過程。過程類似下面的曲面,演算法試圖去尋找損失曲面的全域性最小值,當然損失曲面實際中不一定是凸曲面,可能會更加凹凸不平,存在多個區域性高低點。我們還是回到主題,講述的重點在於超引數尋優的意義。當我們損失曲面給定的時候,我們尋找最優點的路徑可能會有一些模...

超參尋優使用介紹

在機器學習裡,我們本質上是對損失函式進行最優化的過程。過程類似下面的曲面,演算法試圖去尋找損失曲面的全域性最小值,當然損失曲面實際中不一定是凸曲面,可能會更加凹凸不平,存在多個區域性高低點。我們還是回到主題,講述的重點在於超引數尋優的意義。當我們損失曲面給定的時候,我們尋找最優點的路徑可能會有一些模...