UIView表示画像の高度なテクニック

1623 ワード

一、UIImageviewをUIViewに追加する(まあまあ)
UIImageView *imageView = [[UIImageView alloc]initWithFrame:self.view.bounds];
imageView.image = [UIImage imageNamed:@"home"];
[self.view addSubview:imageView];

このように、元の画像のサイズが足りない(viewより小さい)と、画像が引っ張られ、画像が歪み、viewが解放されてもメモリが残っていません.
二、画像からUICOLORを生成してUIDIewの背景色を設定する.注意画像に基づいてcolorを生成する(推奨しない)
1 . imageName方式:画像が小さく、頻繁に使用される画像の場合は、imageName:を使用して画像をロードします(ボタン画像/ホームページ画像/プレースホルダ)
self.view.backgroundColor =[UIColor colorWithPatternImage:[UIImage imageNamed:@"home"]]; 

2 . contentOfFile方式:画像が大きく、使用回数が少ない場合はimageWithContentOfFile:を使用してロードします(アルバム/バージョンの新しいプロパティ)
NSString *path = [[NSBundle mainBundle]pathForResource:@"name" ofType:@"png"];  
    self.view.backgroundColor =[UIColor colorWithPatternImage:[UIImage imageWithContentsOfFile:path]]; 

以上の2つの方法は、colorを生成する際に大量のメモリを消費する(元のピクチャのN倍、このNは数千程度に達する可能性があり、元のピクチャのサイズが足りなければ、元のサイズで1つずつUを描くことができ、自動的に引き伸ばされない.1と2の違い:1のcolorはViewの解放に伴って解放されず、メモリにずっと存在する.(再びこの画像からColorを生成するときは、メモリを再申請することはありません).2のカラーはViewのリリースに伴ってリリースされます.
三、quarCore方式(推奨)
UIImage *image = [UIImage imageNamed:@"3549"];
//      image  :UIImage *image = [UIImage imageWithContentsOfFile:path];
self.view.layer.contents = (id)image.CGImage;
//         
self.view.layer.backgroundColor = [UIColor clearColor].CGColor;

簡単な1枚の画像を表示する場合には、UIViewを利用する.layer.Contentsで十分、UIImageViewを使用して追加のリソース消費をもたらす必要はありません.
パフォーマンスの最適化に関心のあるパートナーは、ここに移動できます.http://blog.csdn.net/biyuhuaping/article/details/78606226