Я создаю эскизы для ячеек в коллекции, а некоторые изображения не поддерживают их соотношение сторон. Они выглядят растянутыми, то есть изображение выглядит короче и толще. Странно, что это не происходит для изображений, снятых камерой из моего приложения. Это происходит только для любых импортированных изображений, например из библиотеки фотографий (даже если они были сделаны с камерой) и для нескольких изображений, которые я импортировал из Интернета. Режим содержимого изображения изображения ячейки установлен в UIViewContentModeScaleAspectFit
. Я также использую SDWebImage
для кэширования.Создание эскизов для UICollectionview, не поддерживающих аспект
Может ли кто-нибудь сказать мне, как убедиться, что соотношение сторон остается неизменным для всех изображений? Вот код, я использую ...
- (UIImage *)imageByScalingToSize:(CGSize)size
{
UIGraphicsBeginImageContextWithOptions(size, YES, 0.0);
[self drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage *resizedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resizedImage;
}
Код внутри cellForItemAtIndexPath ...
if ([self.allCacheKeys count] > 0) {
// check to see if the cacheKeys arrays contains any keys (URLs)
NSString *cacheKey = self.allCacheKeys[indexPath.row];
if (cacheKey) {
[self.imageCache queryDiskCacheForKey:cacheKey done:^(UIImage *image, SDImageCacheType cacheType) {
if (image) {
// image is found in the cache
NSLog(@"Image found in cache!");
UIImage *thumbnail = [image imageByScalingToSize:CGSizeMake(ITEM_SIZE, ITEM_SIZE)];
cell.imageView.image = thumbnail;
}
}
}
}
Первый метод, который вы Написал работал, но только если я установить режим содержания ImageView в клетке, чтобы UIViewContentModeScaleAspectFill и установить clipsToBounds ДА. Но я заметил, что при использовании режима AspectFill я получил тот же результат с моим исходным кодом. Спасибо за помощь. – SonnyB