2011-09-11 11 views
0

こんにちは、私は現在CoreDataモデルのNSData属性として小さな画像(約100x160)を持っています。UITableViewCellにサイズ変更する必要がある画像を表示

私はすべてのエンティティをTableViewに表示します。単一のセル内のUIImageViewのサイズは50×80です。このフレームに画像をドロップするだけで、少しペピーになります。

私のtableViewCellにこの画像を表示する最適なソリューションは何ですか?それを私のcellForRowAtIndexPathでオンザフライでサイズ変更しますか?おそらく、これは私のテーブルビューを少し遅らせるようになります。

作成時にサイズを変更して、それを私のcoredataエンティティ(またはおそらくはディスク)に保存しますか?

ありがとうございました!何か不明な点がある場合はコメントを残してください。

答えて

0

そのために画像を切り抜く/サイズ変更する必要があります。次に、必要なフレームごとに画像をトリミングするコードを示します。

- (void)viewDidLoad 
    { 
     [super viewDidLoad]; 
     // do something...... 
     UIImage *img = [UIImage imageWithData:(nsdata)]; // nsdata will be your image data as you specified. 
     // To crop Image 
     UIImage *croppedImage = [self imageByCropping:img] toRect:CGRectMake(10, 10, 50, 80)]; 

     // To resize image 
     UIImage *resizedImage = [self resizeImage:img width:50 height:80]; 
    } 

クロップ画像:

- (UIImage*)imageByCropping:(UIImage *)imageToCrop toRect:(CGRect)rect 
    { 
     CGImageRef imageRef = CGImageCreateWithImageInRect([imageToCrop CGImage], rect); 
     UIImage *cropped = [UIImage imageWithCGImage:imageRef]; 
     return cropped; 
    } 

画像のサイズ変更:

-(UIImage *)resizeImage:(UIImage *)image width:(int)width height:(int)height 
    { 
     CGImageRef imageRef = [image CGImage]; 
     CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(imageRef); 
     alphaInfo = kCGImageAlphaNoneSkipLast; 
     CGContextRef bitmap = CGBitmapContextCreate(NULL, width, height, CGImageGetBitsPerComponent(imageRef), 4 * width, CGImageGetColorSpace(imageRef), alphaInfo); 
     CGContextDrawImage(bitmap, CGRectMake(0, 0, width, height), imageRef); 
     CGImageRef ref = CGBitmapContextCreateImage(bitmap); 
     UIImage *result = [UIImage imageWithCGImage:ref]; 
     return result; 
    } 

あなたはのいずれかの方法で行くことができます。

+0

私の問題は、サイズを変更する方法ではありませんが、スクロール中にサイズを変更する必要があります。 – choise

+0

はい、そうすべきです。また、サイズ変更した画像をキャッシュに入れたら、毎回ではなくキャッシュから画像を参照して、サイズを変更することができます。 –

+0

奇妙なことです。テレビをすばやくスクロールすると、この列に間違った画像が表示されます。時にはそれらが正しい(最初の負荷で)スクロールは通常正しく感じることがあり、スクロールするといくつかのセルに間違った画像が表示されます。なぜこのようなことが起こるのか? – choise

関連する問題