0

我在CGContextRef图形上下文中重绘图像,但是,当我绘制图像时,它们的纵横比是错误的。在下图中,图形上下文是黑色方块(一个单独的UIView类),正在显示的图片是从它下面的红色轮播中选择的。我看了一堆帖子,但不知道在哪里修复它。

在此处输入图像描述

这是我的drawRect方法。我不知道在哪里可以设置contentMode,因为没有UIImageView,只有UIImages.

- (void)drawRect:(CGRect)rect
{
    NSMutableDictionary *dna = _mini.dna;
    NSString *directory = @"FacialFeatures";

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextClearRect(context, self.bounds);

    //flip the coordinates for Core Graphics coordinates
    CGContextScaleCTM(context, 1, -1);
    CGContextTranslateCTM(context, 0, -self.bounds.size.height);

    for (id key in dna) {
        NSString *value = [dna objectForKey:key];
        if (![value isEqualToString:@""]) {
            UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"%@/%@/%@", directory, key, value]];
            CGContextDrawImage(context, rect, image.CGImage);
        }
    }
}

对于额外的帮助,我也不知道为什么 Graphics Context 的背景是黑色的。我已经尝试在界面生成器和我的 init 方法中设置它,但似乎所有设置都被忽略了。非常感谢。

4

2 回答 2

1

您已使用清除矩形

CGContextClearRect(context, self.bounds);

这将使您的上下文和视图透明,因此,检查您的超级视图的颜色可能是黑色。如果你想要它是白色的,你可以这样做

CGContextClearRect(context, rect);
CGContextSetStrokeColorWithColor(context, [UIColor whiteColor].CGColor);

图像拉伸的原因

CGContextDrawImage将缩放图像以适合指定的矩形。因此,请尝试以保持其纵横比的方式提供矩形。

在这里,我提供了一些链接,这些链接使用一些计算来计算矩形或大小
调整图像,同时保持宽高比
UIImage 宽高比合适

于 2013-10-29T14:34:05.363 回答
0

包括这一行并检查上述方法: -

[super drawRect:rect];
于 2013-10-29T12:59:49.600 回答