У меня есть изображение, которое я использую в обычном UITableViewCell
. Изображение - черный треугольник на прозрачном фоне, и я использую фильтр CIColorInvert
, чтобы сделать его белым треугольником на прозрачном фоне.Фильтр CIImage растягивает мое изображение вертикально
Отфильтрованное (перевернутое) изображение растягивается вертикально, как я могу остановить это?
Если я загружаю UIImage
непосредственно, не делая фильтрацию, что я получаю это:
Если я применяю CIFilter
то, что я получаю это:
Вот мой код:
// create the white triangle
CIImage *inputImage = [[CIImage alloc] initWithImage:
[UIImage imageNamed:@"TriangleRight"]];
CIFilter *invertFilter = [CIFilter filterWithName:@"CIColorInvert"];
[invertFilter setDefaults];
[invertFilter setValue: inputImage forKey: @"inputImage"];
CIImage *outputImage = [invertFilter valueForKey: @"outputImage"];
CIContext *context = [CIContext contextWithOptions:nil];
rightArrow = [UIImage imageWithCGImage:[context createCGImage:outputImage fromRect:outputImage.extent]];
В обоих случаях я установки изображения в UIImageView
следующим образом:
cell.arrow.image = rightArrow;
В UIImageView
размеры 15х15 (в МБ). TriangleRight.png - 15x15 пикселей, [email protected] - 30x30 пикселей.
Что мне не хватает, чтобы предотвратить растягивание изображения CIFilter
?
UPDATE: 5 минут после размещения вопроса я понял, проблему: Я использую Auto Layout и UIImageView
не имеет явное ограничение высоты (только ширина). Добавление явного ограничения высоты разрешило проблему. Тем не менее, это все еще не объясняет, почему использование непосредственно обработанного UIImage
(даже без явного ограничения высоты).