Я разрабатываю приложение для 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))
Знаете ли вы, как я могу решить эту проблему?