Я разрабатываю приложение для iOS 4.
Я использую этот код в UIImageView
в UITableViewCell
:
cell.photo.contentMode = UIViewContentModeScaleAspectFill;
[cell.photo setClipsToBounds:YES];
Мои изображения больше в высоту, чем в ширину, и когда я устанавливаю UIViewContentModeScaleAspectFill
, изображения масштабируются по ширине с шириной UIImageView. При этом изображение становится больше, чем UIImageView, и я вижу его вне UIImageView
.
Затем мне нужно использовать setClipsToBounds:YES
, чтобы этого не допустить, но теперь все мои изображения теряют смысл.
Есть ли способ использовать UIViewContentModeScaleAspectFill и центрировать верхний левый угол изображения с верхним левым UIImageView
углом? Если мне нужно потерять часть имиджа, я предпочитаю лишиться ног, а не головы.
ОБНОВЛЕНИЕ
Я использую фреймворк sdWebImageи использовал ответ Вадима Елагина, и теперь это мой код:
[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))
Вы знаете, как я могу решить эту проблему?