UIImage雖然可以加載磕道、顯示各種格式的位圖,甚至可以同時(shí)加載圖片讳侨,接下來依次播放多張圖片形成動(dòng)畫呵萨。但UIImage的功能依然有限,它不能對(duì)圖片進(jìn)行縮放跨跨、旋轉(zhuǎn)潮峦,不能"挖取"源圖片的指定區(qū)域等,這些功能可借助Quartz 2D的CGImageRef來實(shí)現(xiàn)勇婴。
關(guān)于Quartz 2D繪圖的知識(shí)忱嘹,后面會(huì)詳細(xì)介紹,包括如何利用CGImageRef來繪制耕渴、旋轉(zhuǎn)拘悦、縮放位圖等。
UIImage與CGImageRef之間可以相互轉(zhuǎn)換橱脸,CGImageRef并不是面向?qū)ο蟮腁PI础米,也不是類,只是一個(gè)指針類型添诉,Quartz 2D對(duì)CGImageRef的定義為:typedef struct CGImage *CGImageRef;屁桑,由此可見,CGImageRef只是一個(gè)指針類型栏赴。
如果已有UIImage蘑斧,程序可以調(diào)用UIImage的CGImage方法獲取它封裝的CGImageRef。例如,如下代碼:
UIImage* image = ...
CGImageRef ciRef = [image CGImage];
如果已有CGImageRef竖瘾,將它包裝成UIImage也很簡(jiǎn)單沟突,調(diào)用UIImage的imageWithCGImage:方法加載圖片即可。例如如下代碼:
CGImageRef ciRef = ...
UIImage* image = [UIImage imageWithCGImage: ciRef];