我正在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);
}
}
}
对于奖金帮助,我也不知道为什么图形上下文的背景是黑色的。我已尝试在界面生成器和我的init方法中设置它,但似乎所有设置都被忽略。非常感谢。
答案 0 :(得分:1)
您已使用
清除了矩形CGContextClearRect(context, self.bounds);
这将使您的上下文和视图变得透明,检查您的超级视图的颜色可能是黑色。如果你想要它是白色的,你可以这样做
CGContextClearRect(context, rect);
CGContextSetStrokeColorWithColor(context, [UIColor whiteColor].CGColor);
图片拉伸的原因
CGContextDrawImage
将缩放图像以适合指定的rect。因此,尝试以这样的方式提供矩形,以保持其宽高比。
这里我提供了一些使用一些计算来计算矩形或大小的链接
Resize image with keeping aspect ratio
UIImage aspect fit
答案 1 :(得分:0)
包括此行并检查上述方法: -
[super drawRect:rect];