2

画像のサイズを変更するために一般的に使用される方法を使用しようとしています。このメソッドを使用せずに、画像のURLを取得するコードを次に示します。

NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *img = [[UIImage alloc] initWithData:data];

cell.imageView.image = img;

これは正常に機能します。しかし、私がこの方法を使おうとすると:

-(UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize;
{
    UIGraphicsBeginImageContext( newSize );
    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;
}

これを使用してそれを呼び出します:

UIImage *scaledImage = [self imageWithImage:img scaledToSize:CGSizeMake(10.0f,10.0f)];

次に、このように私のテーブルに入れます:

cell.imageView.image = scaledImage;

何も表示されません。ここに欠けているものはありますか?

4

1 に答える 1

1

これは、カスタマイズされた UITableViewCells を UIImage にエクスポートすることに似ています。

-imageWithImage:scaledToSize: メソッドで行う必要があることは、その質問に対する私の回答から変更されたものです。

-(UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize
{
    // Create a bitmap context.
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    CGContextRef bitmapContextForScaledImage = CGBitmapContextCreate(nil, newSize.width, newSize.height, 8, 0, colorSpace, kCGImageAlphaNone);
    CGColorSpaceRelease(colorSpace);

    // Draw the image's layer into the context.
    UIImageView * imageView = [[UIImageView alloc] initWithImage:image];
    [imageView.layer renderInContext:bitmapContextForCell];
    [imageView release];

    // Create a CGImage from the context.
    CGImageRef cgScaledImage = CGBitmapContextCreateImage(bitmapContextForScaledImage);

    // Create a UIImage from the CGImage.
    UIImage * scaledImage = [UIImage imageWithCGImage:cgScaledImage];

    // Clean up.
    CGImageRelease(cgScaledImage);
    CGContextRelease(bitmapContextForScaledImage);

    return scaledImage;
}
于 2010-11-17T00:10:11.390 に答える