基於PhotoKit框架封裝(相簿的單選與多選)

2021-07-16 02:13:56 字數 2030 閱讀 3280

/*

* 獲取全部相簿

*/-(nsmutablearray *)getphotolistdatas;

/* * 獲取某乙個相簿的結果集

*/-(phfetchresult *)getfetchresult:(phassetcollection *)assetcollection;

/* * 獲取實體,並把結果存放到陣列中,返回值陣列

*/-(nsmutablearray *)getphotoassets:(phfetchresult *)fetchresult;

/* * 只獲取相機膠卷結果集

*/-(phfetchresult *)getcamerarollfetchresul;

實現:

-(nsmutablearray *)getphotolistdatas

return dataarray;

}-(phfetchresult *)getfetchresult:(phassetcollection *)assetcollection

-(nsmutablearray *)getphotoassets:(phfetchresult *)fetchresult

}return dataarray;

}-(phfetchresult *)getcamerarollfetchresul

-(void)getimageobject:(id)asset complection:(void (^)(uiimage *, bool))complection

}}];}}

- (phimagerequestid)requestimageforasset:(phasset *)asset 

targetsize:(cgsize)targetsize

contentmode:(phimagecontentmode)contentmode

options:(nullable phimagerequestoptions *)options

resulthandler:(void (^)

(uiimage *__nullable result, nsdictionary *__nullable info))resulthandler;

這個方法中的引數坑點不少,下面逐個引數列舉一下其作用及坑點:

1、asset,影象對應的 phasset。

2、targetsize,需要獲取的影象的尺寸,如果輸入的尺寸大於資源原圖的尺寸,則只返回原圖。需要注意在 phimagemanager 中,所有的尺寸都是用 pixel 作為單位(note that all sizes are in pixels),因此這裡想要獲得正確大小的影象,需要把輸入的尺寸轉換為 pixel。如果需要返回原圖尺寸,可以傳入 photokit 中預先定義好的常量?phimagemanagermaximumsize,表示返回可選範圍內的最大的尺寸,即原圖尺寸。

3、 contentmode,影象的剪裁方式,與?uiview 的 contentmode 引數相似,控制**應該以按比例縮放還是按比例填充的方式放到最終展示的容器內。注意如果 targetsize 傳入?phimagemanagermaximumsize,則 contentmode 無論傳入什麼值都會被視為?phimagecontentmodedefault。

4、options,乙個?phimagerequestoptions 的例項,可以控制的內容相當豐富,包括影象的質量、版本,也會有引數控制影象的剪裁,下面再展開說明。

5、resulthandler,請求結束後被呼叫的 block,返回乙個包含資源對於影象的 uiimage 和包含影象資訊的乙個 nsdictionary,在整個請求的週期中,這個 block 可能會被多次呼叫,關於這點連同 options 引數在下面展開說明。

最後封裝了乙個demo,實現的多選與單選。具體效果如下:

封裝mvc框架

為了達到更快的開發效率,我們可以根據mvc思想來封裝屬於我們自己的框架 首先我們先來一起回顧下mvc模式的目的,mvc是實現一種動態的程式設計,使後續對程式的修改和擴充套件簡化,並且使程式某一部分的重複利用成為可能,此模式通過對複雜度的簡化,使程式結構更加直觀。軟體系統通過對自身基本部分分離的同時也...

框架封裝基礎

汙染 全域性變數!通過傳參,可以讓程式減少查詢過程 優化 function win json window json json window return 零汙染框架雛形 function win win.window 命名空間的模組化 function win 公共模組 l.common 字串 l...

基於Angular框架封裝的畫環形進度條元件

1.首先在我們的plugin目錄下將本文件附件中的js檔案引入,這個元件是以angular工廠模式建立canvas物件,以angular指令控制dom 2.然後在html檔案中在需要畫圖的地方呼叫元件,以下為html的demo div class test ng controller testctr...