Закругленные Rect / Закругленные углы для изображений в UITableView - PullRequest
1 голос
/ 26 июля 2011

Я использую эту категорию и создаю изображения для моего UITableView одинакового размера.Есть ли способ, чтобы изображения также имели закругленные углы?Спасибо!

+ (UIImage *)scale:(UIImage *)image toSize:(CGSize)size
{
    UIGraphicsBeginImageContext(size);
    [image drawInRect:CGRectMake(0, 0, size.width, size.height)];
    UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return scaledImage;
}

Редактировать: Затем я получаю изображение и другую информацию об объекте, чтобы поместить его в NSDictionary, чтобы получить в UITableView.Я попытался изменить свойство UIImageView.layer в cellForRowAtIndexPath, но, похоже, это не сработало:

cell.TitleLabel.text = [dict objectForKey:@"Name"];
cell.CardImage.image = [dict objectForKey:@"Image"];
cell.CardImage.layer.cornerRadius = 5.0;

Ответы [ 4 ]

7 голосов
/ 26 июля 2011

Вы можете добавить отсечение к операции рисования, класс UIBezierPath делает это очень простым.

Расширить код до:

+ (UIImage *)scale:(UIImage *)image toSize:(CGSize)size
{
    UIGraphicsBeginImageContext(size);
    CGRect rect = CGRectMake(0, 0, size.width, size.height);
    [[UIBezierPath bezierPathWithRoundeRect:rect cornerRadius:5] addClip];
    [image drawInRect:rect];
    UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return scaledImage;
}
1 голос
/ 26 июля 2011
  1. Включает платформу QuartzCore.
  2. Импорт CALayer.h
  3. image.layer.cornerFRadius = 5;
1 голос
/ 26 июля 2011

Попробуйте это

image.layer.cornerRadius = 5;
0 голосов
/ 19 августа 2011

Как сказали Сису и евангелист: image.layer.cornerRadius = 5;

Но вам может понадобиться добавить:

[image.layer setMasksToBounds: YES];

...