【问题标题】:UIImage in an UIImageView rendering distortedUIImageView 中的 UIImage 渲染失真
【发布时间】:2012-10-16 15:53:27
【问题描述】:

我在超级视图中有一个 3 层的 UIImageView。 (灰色矩形顶部的白色区域是我的超级视图,灰色拉长的矩形是一个子视图,黑色方块是拉长的灰色矩形的另一个子视图,齿轮是 UIImageView 的图像,它是黑色方块的子视图)。 UIImageView 的边框矩形计算如下,其中 _normalImage 是一个 UIImage 对象。我在代表黑色方块的子类中执行此操作

    CGFloat xPoint = self.bounds.size.width/2 - _normalImage.size.width/2;
    CGFloat yPoint = self.bounds.size.height/2 - _normalImage.size.height/2;
    CGRect frameRect = CGRectMake(xPoint, yPoint, _normalImage.size.width, _normalImage.size.height);
    self.imageHolder = [[UIImageView alloc] initWithFrame:frameRect];

_normalImage 是 26X26,应该是一个完美的正方形。然而,图像呈现失真,就好像存在纵横比损失一样。

怎么了?

【问题讨论】:

  • self 在这种情况下是黑色背景的视图,您最终是否将imageHolder 添加为黑色视图的子视图?
  • 是的 self 是黑色背景。 imageHolder 是黑色视图的子视图
  • 那么当你NSLog(@"%@", NSStringFromCGRect(self.imageHolder.bounds))时,计算出的帧大小是否正确?
  • 如果您有视网膜显示器,请尝试将图像分辨率加倍并在其名称中添加“@2x”后缀。

标签: iphone ios uiview uiimageview uiimage


【解决方案1】:

尝试对坐标使用 floorf() 函数,以防止它们包含小数部分。

【讨论】:

  • 都是整数,没有小数部分
  • 可能是 Retina 显示屏的问题?
【解决方案2】:

图像被拉伸是因为默认情况下它使用 UIViewContentModeScaleToFill 内容模式。

self.imageHolder.contentMode = UIViewContentModeScaleAspectFit;

【讨论】:

  • 不,我尝试在没有 UIImageView 的情况下绘制图像(覆盖 UIView 的 drawRect)。 UIImageView 应该是 26X26 的完美正方形。但是我得到了一个矩形,(至少在视觉上感觉像)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-13
  • 1970-01-01
  • 1970-01-01
  • 2019-11-02
  • 1970-01-01
  • 1970-01-01
  • 2010-12-22
相关资源
最近更新 更多