UIKit中有一些類能夠用來操縱單個圖像,還有一個圖像類能夠用來顯示圖像。Apple還提供了一種特殊的導航控制器,用於從圖像庫中選擇圖像。緩存
UIImage類對圖像及其底層數據進行封裝。它能夠直接繪製在一個視圖內,或者做爲一個圖像容器在另外一個更大的圖像視圖容器中使用。這個類類提供的方法能夠用來從各類來源中載入圖像,在屏幕上設置圖片的方向,以及提供有關圖像的信息。對於簡單的圖形應用,能夠將UIImage對象用在視圖類的drawRect方法中,用來繪製圖像和團模板。網絡
你能夠用文件來初始化,也能夠用url、原始數據、或者一個Core Graphics圖像的內容。靜態方法(類方法)和實例方法都有;這些方法能夠引用並緩存已有的圖像內容,也能夠實例化新的圖像對象,如何使用徹底取決於應用程序的須要。框架
使用一個圖像的最簡單方法就是經過靜態方法。靜態方法不會去管理圖像的實例,與之相反,他們提供了直接的接口,能夠用來共享位於框架內部的記憶體緩存對象。這有助於保持應用程序的整潔,也會生去作清理工做的須要。靜態方法和實例方法均可以用來建立相同的對象。url
1、使用文件建立(靜態方法)指針
UIImage *myImage = [UIImage imageNamed:@"default"];
2、使用 URL 和原始數據(靜態方法)code
NSData *imageData = [ NSData initWithBytes:image:imagePtr length:imageSize ]; // 假設 imagePtr 是一個指向原始數據的指針 UIImage* myImage = [ [ UIImage alloc ]initWithData:imageData ]; UIImage *myImage2 =[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.kutx.cn/xiaotupian/icons/png/200803/20080327095245737.png"]]];
3、使用Core Graphics (靜態方法)orm
UIImage* myImage3 = [UIImage imageWithCGImage:myCGImageRef];
4、使用文件(實例方法)對象
UIImage* myImage4 = [[UIImage alloc]initWithContentsOfFile:[NSString stringWithFormat:@"%@/Documents/ppp.png",NSHomeDirectory()]];
5、使用 URL 和原始數據(實例方法)接口
若是圖像存儲在內存中,你能夠建立一個NSData 對象做爲initWithData 方法的原始輸入,來初始化一個UIImage對象。圖片
若是圖像是一張網絡圖片,可使用NSData來進行預載,而後用它來初始化UIImage對象:
UIImage *myImage5 =[ [ UIImage alloc]initWithData: [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.kutx.cn/xiaotupian/icons/png/200803/20080327095245737.png"]] ];
6、使用Core Graphics (實例方法)
UIImage* myImage6 = [[UIImage alloc]initWithCGImage:myCGImageRef];
7、顯示圖像
當視圖類的drawRect 方法被喚起時,它們會調用內部的回吐例程。與其餘圖像類不一樣,UIImage對象不能被當成子 ,直接附着在其餘視圖上,由於他不是一個視圖類。反過來,一個UIView類則能夠在視圖的drawRect例程中,調用圖像的 drawRect 方法。這可使得圖像顯在UIView類的顯示區域內部。
只要一個視圖對象的窗口的某些部分須要繪製,就能夠調用它的drawRect方法。要在窗口內 部顯示一個 UIImage 的內容,能夠調用該對象的 drawRect 方法:
- (void)drawRect:(CGRect)rect{ CGRect myRect; myRect.origin.x = 0.0 ; myRect.origin.y = 0.0; myRect.size = myImage.size; [myImage drawInRect:myRect]; }
注意不要在drawRect方法內分配任何新對象,由於他在每次窗口重繪時都被調用。 只有在視圖初次繪製時,纔會調用drawRect方法。要強制更新,可使用視圖類的 setNeedsDisplay 或者 setNeedsDisplayInRect 方法:
[myView setNeedsDisplay]; [myView setNeedsDisplayInRect:self.view];
8、繪製圖案
若是圖像是一個圖案模板,你能夠用UIImage類提供的另一個方法 drawAsPatternInrect,在整個視圖區域重複繪製該圖像:
UIView* myView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 200, 200)]; [myImage drawInRect:myView.frame]; [self.view addSubview:myView];
9、方向
一個圖像的方向,決定了它在屏幕上如何被旋轉。由於iPhone 能被以6種不一樣的方式握持,因此在方向改變時,可以將圖像作相應的旋轉就十分必要了。UIImage 有個只讀屬性 imageOrientation 來標識它的方向。
UIImageOrientation myOrientation = myImage.imageOrientation ; 能夠設置如下方向: typedef enum { UIImageOrientationUp, // default orientation 默認方向 UIImageOrientationDown, // 180 deg rotation 旋轉180度 UIImageOrientationLeft, // 90 deg CCW 逆時針旋轉90度 UIImageOrientationRight, // 90 deg CW 順時針旋轉90度 UIImageOrientationUpMirrored, // as above but image mirrored along other axis. horizontal flip 向上水平翻轉 UIImageOrientationDownMirrored, // horizontal flip 向下水平翻轉 UIImageOrientationLeftMirrored, // vertical flip 逆時針旋轉90度,垂直翻轉 UIImageOrientationRightMirrored, // vertical flip 順時針旋轉90度,垂直翻轉 } UIImageOrientation;
10、圖像尺寸
你能夠經過size屬性讀取一個圖像的尺寸,獲得一個CGSize 結構,其中包含 wifth 和height 。
CGSize myImageSize = myImage.size;