У меня есть изображение, которое я использую в пользовательском файле UITableViewCell
. Изображение представляет собой черный треугольник на прозрачном фоне, и я использую фильтр CIColorInvert
, чтобы сделать его белым треугольником на прозрачном фоне.
Отфильтрованное (перевернутое) изображение растягивается по вертикали, как я могу предотвратить это?
Если я загружаю 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
составляют 15x15 (в IB). TriangleRight.png — 15x15 пикселей, [email protected] — 30x30 пикселей.
Что мне не хватает, чтобы CIFilter
не растягивал изображение?
ОБНОВЛЕНИЕ: через 5 минут после публикации вопроса я понял проблему: я использую Auto Layout, а UIImageView
не имеет явного ограничения по высоте (только по ширине). Добавление явного ограничения высоты решило проблему. Однако это все еще не объясняет, почему использование UIImage
напрямую работало (даже без явного ограничения высоты).