0

我有一张我在 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直接工作(即使没有明确的高度限制)。

4

1 回答 1

1
UIImageOrientation originalOrientation = self->imageview.image.imageOrientation;
imageview.image = [[UIImage alloc] initWithCGImage:imgRef scale:1.0     orientation:originalOrientation];

此外,使用原始方向应该已修复它。

于 2013-05-05T17:27:56.000 回答