UIImageView 和 UIImage 大小相等

Posted

技术标签:

【中文标题】UIImageView 和 UIImage 大小相等【英文标题】:UIImageView and UIImage of equal size 【发布时间】:2010-01-12 10:04:59 【问题描述】:

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

我有一个 UIImageView,它使用 setImage: 加载图像。 UIImageView 预先使用具有图像精确尺寸(41*41 像素)的帧进行初始化。我还将内容模式设置为 UIViewContentModeCenter,这样可以确保我的图像永远不会被缩放。

现在,当我查看我的图像视图时,我发现图像被水平裁剪了一些,并且看起来有点模糊(这是背景中正在发生一些重新缩放的迹象)。相反,如果我用 1 个额外像素的宽度初始化我的图像视图,则一切正常(但是我的图像视图现在比我的图像宽 1 个像素)。

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

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

    框架中存在错误 图像的渲染不适用于特定尺寸的图像。我知道例如纹理总是 2 的幂,尽管我怀疑这对 UIImageView 有多大意义。

作为记录,我正在为 OS 3.0 编译,问题发生在模拟器和设备上。

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

你是对的 :) 我将图像视图定位在一些浮点坐标上。我已经对它们进行了四舍五入,现在它可以正常工作了。

以上是关于UIImageView 和 UIImage 大小相等的主要内容,如果未能解决你的问题,请参考以下文章

将 UITableViewCell 高度设置为 UIImage 高度?

防止 UITableViewCell 的 UIImageView 调整异步加载的 UIImage 的大小

UIImageView中UIImage上下空白高度

iPhone 编程:如何使 UIImageView 中的 UIImage 以实际大小显示?

在 viewDidLoad 处将可调整大小的 UIImage 设置为 UIImageView 被忽略

UIImage 调整大小并裁剪以适合