Отобразить изображение, размер которого нужно изменить, в UITableViewCell - PullRequest
0 голосов
/ 12 сентября 2011

Привет, поэтому в настоящее время у меня есть небольшое изображение (около 100x160) в качестве атрибута NSData в моей модели CoreData.

я отображаю все объекты в TableView. UIImageView в одной ячейке имеет размер только 50x80. просто падение изображения в этот кадр выглядит немного галечно.

что было бы лучшим решением для отображения этого изображения в моем tableViewCell? изменить размер на лету в моем cellForRowAtIndexPath? возможно, это приведет к тому, что мой просмотр таблицы станет немного запаздывающим.

изменить размер при создании и сохранить его в моей сущности coredata (или, возможно, на диске)?

спасибо! пожалуйста, оставьте комментарий, если что-то неясно

1 Ответ

0 голосов
/ 12 сентября 2011

Для этого вам нужно обрезать / изменить размер изображения.Ниже приведен код для обрезки изображения в соответствии с требуемым кадром.

    - (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;  
    }

Вы можете пойти одним из способов.

...