UIImage 簡介

UIImage類對圖像及其底層數據進行封裝。它可以直接繪製在一個視圖內,或者作爲一個圖像容器在另一個更大的圖像視圖容器中使用。這個類類提供的方法可以用來從各種來源中載入圖像,在屏幕上設置圖片的方向,以及提供有關圖像的信息。對於簡單的圖形應用,可以將UIImage對象用在視圖類的drawRect方法中,用來繪製圖像和團模板。

你可以用文件來初始化,也可以用url、原始數據、或者一個CoreGraphics圖像的內容。靜態方法(類方法)和實例方法都有;這些方法可以引用並緩存已有的圖像內容,也可以實例化新的圖像對象,如何使用完全取決於應用程序的需要。

使用一個圖像的最簡單方法就是通過靜態方法。靜態方法不會去管理圖像的實例,與之相反,他們提供了直接的接口,可以用來共享位於框架內部的記憶體緩存對象。這有助於保持應用程序的整潔,也會生去做清理工作的需要。靜態方法和實例方法都可以用來創建相同的對象。


一、使用文件創建(靜態方法)

  1. UIImage *myImage =[UIImage imageNamed:@"ppp"];
二、使用 URL 和原始數據(靜態方法)

 

  1. NSData *imageData = [NSData initWithBytes:image:imagePtr length:imageSize ]; // 假設imagePtr 是一個指向原始數據的指針
  2. UIImage* myImage = [ [UIImage alloc ]initWithData:imageData ];
  1. UIImage *myImage2 =[UIImage imageWithData:[NSDatadataWithContentsOfURL:[NSURLURLWithString:@"http://www.kutx.cn/xiaotupian/icons/png/200803/20080327095245737.png"]]];
三、使用Core Graphics (靜態方法)
  1. UIImage* myImage3 =[UIImage imageWithCGImage:myCGImageRef];
四、使用文件(實例方法)

 

  1. UIImage* myImage4 =[[UIImage alloc]initWithContentsOfFile:[NSStringstringWithFormat:@"%@/Documents/ppp.png",NSHomeDirectory()]];

五、使用 URL 和原始數據(實例方法)

如果圖像存儲在內存中,你可以創建一個NSData 對象作爲initWithData方法的原始輸入,來初始化一個UIImage對象。如果圖像是一張網絡圖片,可以使用NSData來進行預載,然後用它來初始化UIImage對象:

  1. UIImage *myImage5 =[ [ UIImage alloc]initWithData: [NSDatadataWithContentsOfURL:[NSURLURLWithString:@"http://www.kutx.cn/xiaotupian/icons/png/200803/20080327095245737.png"]]];
六、使用Core Graphics (實例方法)
  1. UIImage* myImage6 = [[UIImagealloc]initWithCGImage:myCGImageRef];
七、顯示圖像當視圖類的drawRect方法被喚起時,它們會調用內部的回吐例程。與其他圖像類不同,UIImage對象不能被當成子,直接附着在其他視圖上,因爲他不是一個視圖類。反過來,一個UIView類則可以在視圖的drawRect例程中,調用圖像的drawRect方法。這可以使得圖像顯在UIView類的顯示區域內部。只要一個視圖對象的窗口的某些部分需要繪製,就可以調用它的drawRect方法。要在窗口內部顯示一個UIImage 的內容,可以調用該對象的 drawRect 方法:
  1. - (void)drawRect:(CGRect)rect{
  2. CGRect myRect;

  3. myRect.origin.x = 0.0 ;
  4. myRect.origin.y = 0.0;
  5. myRect.size = myImage.size;
  6. [myImage drawInRect:myRect];
  7. }
注意不要在drawRect方法內分配任何新對象,因爲他在每次窗口重繪時都被調用。
只有在視圖初次繪製時,纔會調用drawRect方法。要強制更新,可以使用視圖類的 setNeedsDisplay 或者setNeedsDisplayInRect 方法:
  1. [myView setNeedsDisplay];
  2. [myView setNeedsDisplayInRect:self.view];

八、繪製圖案

如果圖像是一個圖案模板,你可以用UIImage類提供的另外一個方法drawAsPatternInrect,在整個視圖區域重複繪製該圖像:

  1. UIView* myView = [[UIView alloc]initWithFrame:CGRectMake(0, 0,200, 200)];
  2. [myImage drawInRect:myView.frame];
  3. [self.viewaddSubview:myView];<span></span>

九、方向

一個圖像的方向,決定了它在屏幕上如何被旋轉。因爲iPhone能被以6種不同的方式握持,所以在方向改變時,能夠將圖像做相應的旋轉就十分必要了。UIImage 有個只讀屬性imageOrientation 來標識它的方向。

  1. UIImageOrientation myOrientation = myImage.imageOrientation;
可以設置以下方向:
  1. typedef enum {
  2. UIImageOrientationUp, // default orientation 默認方向
  3. UIImageOrientationDown, // 180 deg rotation 旋轉180度
  4. UIImageOrientationLeft, // 90 deg CCW 逆時針旋轉90度
  5. UIImageOrientationRight, // 90 deg CW 順時針旋轉90度
  6. UIImageOrientationUpMirrored, // as above but image mirroredalong other axis. horizontal flip 向上水平翻轉
  7. UIImageOrientationDownMirrored, // horizontal flip向下水平翻轉
  8. UIImageOrientationLeftMirrored, // vertical flip逆時針旋轉90度,垂直翻轉
  9. UIImageOrientationRightMirrored, // vertical flip順時針旋轉90度,垂直翻轉
  10. } UIImageOrientation;

十、圖像尺寸

你可以通過size屬性讀取一個圖像的尺寸,得到一個CGSize 結構,其中包含width 和height

  1. CGSize myImageSize = myImage.size;



原文鏈接:http://blog.sina.com.cn/s/blog_7fa6b06f010121n1.html

發佈了7 篇原創文章 · 獲贊 0 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章