UIImage 映像-IOS開發

來源:互聯網
上載者:User
聲明

歡迎轉載,但是請尊重作者勞動成果,轉載請保留此框內聲明,謝謝。
文章出處:http://blog.csdn.net/iukey

UIKit中有一些類可以用來操縱單個映像,還有一個映像類可以用來顯示映像。Apple還提供了一種特殊的導航控制器,用於從映像庫中選擇映像。

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

你可以用檔案來初始化,也可以用url、未經處理資料、或者一個Core Graphics映像的內容。靜態方法(類方法)和執行個體方法都有;這些方法可以引用並緩衝已有的映像內容,也可以執行個體化新的映像對象,如何使用完全取決於應用程式的需要。

使用一個映像的最簡單方法就是通過靜態方法。靜態方法不會去管理映像的執行個體,與之相反,他們提供了直接的介面,可以用來共用位於架構內部的記憶體緩衝對象。這有助於保持應用程式的整潔,也會生去做清理工作的需要。靜態方法和執行個體方法都可以用來建立相同的對象。

一、使用檔案建立(靜態方法)

UIImage *myImage = [UIImage imageNamed:@"ppp"];

二、使用 URL 和未經處理資料(靜態方法)

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"]]];

三、使用Core Graphics (靜態方法)

UIImage* myImage3 = [UIImage imageWithCGImage:myCGImageRef];

四、使用檔案(執行個體方法)

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

五、使用 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"]] ];

六、使用Core Graphics (執行個體方法)

UIImage* myImage6 = [[UIImage alloc]initWithCGImage:myCGImageRef];

七、顯示映像

當視圖類的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];

八、繪製圖案

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

UIView* myView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 200, 200)];    [myImage drawInRect:myView.frame];    [self.view addSubview:myView];

九、方向

一個映像的方向,決定了它在螢幕上如何被旋轉。因為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;

十、映像尺寸

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

CGSize myImageSize = myImage.size;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.