居中的图像很模糊

时间:2009-09-28 14:53:16

标签: iphone objective-c

我有很多不同大小的png,我想将它们加载到表格中。我有这段代码:

charImage.image = [self imageForId:g.charId glyphNr:g.glyphNr];
[charImage sizeToFit];
//charImage.contentMode = UIViewContentModeCenter;
charImage.center = CGPointMake(30, 23);

除了我的朋友们模糊之外,一切都很好。如果我不将它们居中,那就非常尖锐。它们都是用曲线制成的。我没有全部导出它们,所以仍然有机会以固定大小导出并且图纸已经居中,但我想知道我做错了什么或不完整。他们为什么模糊不清?

我认为无法在此处上传任何照片..

3 个答案:

答案 0 :(得分:10)

这将确保帧位于整数坐标处:

int centerX = 30;
int centerY = 23;
CGSize size = charImage.frame.size;
charImage.frame = CGRectMake((int)(centerX - size.width / 2),
                             (int)(centerY - size.height / 2),
                             size.width, size.height);

这和

之间的区别
charImage.center = CGPointMake(30, 23);

.center setter可以在宽度或高度为错误的奇偶校验时将原点设置为非整数点。正如其他人在这里所说的那样,当图像和文本处于非整数坐标时,它们看起来很模糊。

答案 1 :(得分:4)

这是因为png被放置在子像素位置。将sizeToFit与UIViewContentModeCenter一起使用可以实现这一点。当您不使用UIViewContentModeCenter时,视图位于(0.0,0.0),因此不会模糊。

如果你想避免模糊,首先不要使用sizeToFit,然后用它来使图像居中:

image.frame = CGRectMake(round(centerX - image.frame.size.width / 2.0),
                         round(centerY - image.frame.size.height / 2.0),
                         image.frame.size.width,
                         image.frame.size.height);

答案 2 :(得分:1)

您可以使用计算的坐标代替contentMode:

charImage.frame = CGRectMake(x,y,width,height)