我有一张我在自定义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
直接工作(即使没有明确的高度约束)。
答案 0 :(得分:1)
UIImageOrientation originalOrientation = self->imageview.image.imageOrientation;
imageview.image = [[UIImage alloc] initWithCGImage:imgRef scale:1.0 orientation:originalOrientation];
此外,使用原始方向应该已修复它。