UIImageView和UIImage大小相等

时间:2010-01-12 10:05:00

标签: iphone objective-c cocoa-touch uiimageview uiimage

前几天我在我的代码中遇到了一个奇怪的场景:

我有一个用setImage加载图像的UIImageView:先前使用具有图像精确大小(41 * 41像素)的帧初始化UIImageView。我还将内容模式设置为UIViewContentModeCenter,这应该确保我的图像永远不会缩放。

现在,当我查看我的图像视图时,我看到图像水平有点裁剪,看起来有点模糊(这是一个迹象表明在背景中发生了一些重新缩放)。相反,如果我用1个额外像素宽度初始化我的图像视图,则所有图像视图都完美无缺(但我的图像视图现在比我的图像宽一个像素)。

此外,如果我使用initWithImage初始化我的UIImageView:它似乎也可以正常工作。我在初始化后检查了这个视图的框架,发现它的大小相同:41 * 41。

所以底线是我有一些解决这个问题的方法,但我试图了解这里发生了什么。我能想到的唯一解释是:

  1. 框架中有一个错误
  2. 图像的渲染对于特定尺寸的图像不起作用。我知道,例如纹理总是2的幂,但我怀疑这对UIImageView有很大的意义。
  3. 对于我正在为OS 3.0编译的记录,问题发生在模拟器和设备上。

1 个答案:

答案 0 :(得分:4)

UIImageView是否包含在任何其他视图中?我之前遇到的一件事是由分数像素偏移引起的模糊控制。即如果你使用除法计算一个帧并以非整数浮点值结束,那么UIKit可以在某些偏移和大小处添加一些奇怪的模糊。

因此图像视图可能具有整数大小,但考虑到父项时它的绝对帧可能不是。