Я разрабатываю приложение iOS 4.
Я использую этот код на UIImageView
на UITableViewCell
:
cell.photo.contentMode = UIViewContentModeScaleAspectFill;
[cell.photo setClipsToBounds:YES];
Мои изображения выше ширины, и когда я устанавливаю UIViewContentModeScaleAspectFill
, изображения масштабируются, чтобы соответствовать ширине с шириной UIImageView. При этом изображение становится больше, чем UIImageView, и я вижу его вне UIImageView
.
Затем мне нужно использовать setClipsToBounds:YES
, чтобы не допускать этого, но теперь все мои изображения теряют голову.
Есть ли способ использовать UIViewContentModeScaleAspectFill и верхний левый угол с верхним левым углом UIImageView
? Если мне нужно потерять часть изображения, я предпочитаю потерять ноги, чтобы его голова.
ОБНОВЛЕНИЕ
Я использую sdWebImage framework, и я использовал ответ Вадима Елагина, и теперь это мой код:
[cell.photo setImageWithURL:[NSURL URLWithString:entry.photo]
placeholderImage:[UIImage imageNamed:@"placeholder.png"]
success:^(UIImage *image) {
CGFloat scaleX = cell.photoBorder.bounds.size.width / image.size.width;
CGFloat scaleY = cell.photoBorder.bounds.size.height / image.size.height;
CGFloat scale = MAX(scaleX, scaleY);
cell.photo.frame = CGRectMake(0, 0, image.size.width * scale, image.size.height * scale);
cell.photo.image = image;
}
failure:nil];
Мне нужно подождать, чтобы загрузить все изображения и перезагрузить UITableView, чтобы увидеть правильное изображение в правой ячейке (это происходит из-за того, что изображения кэшируются и загружаются быстрее).
Вместо использования cell.photo.frame
и cell.photo.image
мне нужно перейти к блоку indexPath.row
, чтобы получить правую ячейку.
Я мог бы добавить новый метод в UIImageView + WebCache:
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder success:(void (^)(UIImage *image, NSInteger row))success failure:(void (^)(NSError *error))failure;
{
[self setImageWithURL:url placeholderImage:placeholder options:0 success:success failure:failure];
}
Но если я это сделаю, я получаю сообщение об ошибке:
[self setImageWithURL:url placeholderImage:placeholder options:0 success:success failure:failure];
Потому что теперь успех не типа (void (^)(UIImage *image))
Знаете ли вы, как я могу исправить эту проблему?