IOS瘋狂基礎之UIImage

2021-06-14 15:01:48 字數 2292 閱讀 8842

cgimage和cgimageref這兩個應當是用來重繪圖形的類,它們在應用時是按照影象的畫素矩陣來繪製的,它們可以用來處理bitmap。

cgimageref與uiimage的互轉

cgimageref轉換成uiimage cgimageref

ioffscreen = cgbitmapcontextcreateimage(context);

uiimage* image = [uiimage imagewithcgimage: ioffscreen];

uiimage轉換成cgimageref

uiimage *loadimage=[uiimage imagenamed:@"comicsplash.png"];

cgimageref cgimage=loadimage.cgimage;

顯示部分,如 載入的高為768,美工常常這樣,我只要擷取748,就需要用到以下**

nsstring* imagepath = [[nsbundle

mainbundle] pathforresource:@"

主頁面" oftype:@"png"];

uiimage* imagenameback = [uiimage

imagewithcontentsoffile:imagepath];

uiimageview *image=[[uiimageview

alloc] initwithframe:cgrectmake(0,0, 1024, 748)];

image.

image

= [uiimage

imagewithcgimage:cgimagecreatewithimageinrect([imagenamebackcgimage], cgrectmake(0,

20,

1024

, 748

))];

如題,是不是大家為了方便都這樣載入啊

myimage = [uiimage imagenamed:@"icon.png"];

那麼小心了

這種方法在一些很少,或者很小的程式裡是ok的。

但是,在大量載入的程式裡,請千萬不要這樣做。

為什麼呢 ???????

試想你多了,是什麼後果``````

cache極有可能不會響應 memory warnings and release its objects

所以,用的時候一定要小心的alloc和release

推薦使用

nsstring *path = [[nsbundle mainbundle] pathforresource:@」icon」 oftype:@」png」];

myimage = [uiimage imagewithcontentsoffile:path];

用uiimage載入影象的方法很多,最常用的是下面兩種:

1、用imagenamed函式

[uiimage imagenamed:imagename];

2、用nsdata的方式載入,例如:

1. nsstring *filepath = [[nsbundle mainbundle] pathforresource:filename oftype:extension];

2. nsdata *image = [nsdata datawithcontentsoffile:filepath];

3. [uiimage imagewithdata:image];

由於第一種方式要寫的**比較少,可能比較多人利用imagenamed的方式載入影象。其實這兩種載入方式都有各自的特點。

1)用imagenamed的方式載入時,系統會把影象cache到記憶體。如果影象比較大,或者影象比較多,用這種方式會消耗很大的記憶體,而且釋放影象的 記憶體是一件相對來說比較麻煩的事情。例如:如果利用imagenamed的方式載入影象到乙個動態陣列nsmutablearray,然後將將陣列賦予一 個uiview的物件的animationimages進行逐幀動畫,那麼這將會很有可能造成記憶體洩露。並且釋放影象所佔據的記憶體也不會那麼簡單。但是利 用imagenamed載入影象也有自己的優勢。對於同乙個影象系統只會把它cache到記憶體一次,這對於影象的重複利用是非常有優勢的。例如:你需要在 乙個tableview裡重複載入同樣乙個圖示,那麼用imagenamed載入影象,系統會把那個圖示cache到記憶體,在table裡每次利用那個圖 像的時候,只會把指標指向同一塊記憶體。這種情況使用imagenamed載入影象就會變得非常有效。

無論用哪種方式載入影象,影象使用結束後,一定要記得顯示釋放記憶體。

IOS瘋狂基礎之NSDictionary

廢話少說,看下 就知道用法了。nsdictionary dict nsdictionary dictionarywithobjectsandkeys value1 key1 value2 key2 nil 注意nil 結尾 得到key value的個數 int dictsize mydictiona...

IOS瘋狂基礎之UILabel

前言 我這個人不怎麼喜歡用 xib 或是 storyboard 拖控制項然後關聯操作,我喜歡用寫 的方式來實現。以下是常用的屬性 uilabel label1 uilabel alloc initwithframe cgrectmake 50.0 20.0 200.0 50.0 宣告時必須指定長寬 ...

iOS 瘋狂基礎之NSDate 時間

初始化時間 nsdate today nsdate date nsdateformatter formatter nsdateformatter alloc init formatter setdateformat yyyy mm dd datefrom.text formatter stringf...