我有一张我在 custom 中使用的图像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 像素,TriangleRight@2x.png 为 30x30 像素。
CIFilter
为了防止拉伸图像,我缺少什么?
更新:
发布问题 5 分钟后,我发现了问题:我正在使用自动布局并且UIImageView
没有明确的高度约束(只有宽度)。添加显式高度约束解决了这个问题。但是,这仍然不能解释为什么使用UIImage
直接工作(即使没有明确的高度限制)。