我有很多不同大小的png,我想将它们加载到表格中。我有这段代码:
charImage.image = [self imageForId:g.charId glyphNr:g.glyphNr];
[charImage sizeToFit];
//charImage.contentMode = UIViewContentModeCenter;
charImage.center = CGPointMake(30, 23);
除了我的朋友们模糊之外,一切都很好。如果我不将它们居中,那就非常尖锐。它们都是用曲线制成的。我没有全部导出它们,所以仍然有机会以固定大小导出并且图纸已经居中,但我想知道我做错了什么或不完整。他们为什么模糊不清?
我认为无法在此处上传任何照片..
答案 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)