【问题标题】:UIImageView PNG pixelation on iOS simulator and on deviceiOS模拟器和设备上的UIImageView PNG像素化
【发布时间】:2012-03-12 14:08:40
【问题描述】:

这可能是一个非常简单的问题,但我已经坚持了一周。我正在使用 UIImageView 来显示 Dropbox 品牌 PNG 图像。我在 Interface Builder 中看到了它,但很容易注意到 iOS 模拟器和实际设备(iPad)中的强烈像素化。这里我附上 IB 和模拟器的屏幕截图:

如果有任何提示,我将不胜感激。

提前致谢!

【问题讨论】:

    标签: iphone ios uiimageview


    【解决方案1】:

    InterfaceBuilder 是一个与 iOS 甚至模拟器完全不同的环境。布局之类的东西应该翻译,但一切看起来的方式应该始终由最终产品来判断(因此是为最终产品设计的)。

    您的图像似乎被略微拉伸了。这有很多原因。首先要检查的是 UIImageView 上的调整大小掩码。 UIImageViews 自动调整大小通常是不好的 - 正是因为这个原因。

    顺便说一句,自动调整大小是 UIKit 确保子视图在其父视图更改大小时仍然适合/看起来不错的方式。您可以指定您希望子视图移动多少,以及您希望它伸展多少。阅读它here

    您要做的是设计您的视图 - 回答以下问题:我希望这张图片在最终产品中的尺寸有多大? -- 然后制作实际的 png 大小(同时生成一个 @2x 变体,它是视网膜显示器大小的两倍)。然后,当您在 IB 中进行设计时,将您的 UIImageView 也设置为该大小,并确保将自动调整大小设置设置为禁止拉伸。

    这应该可以解决您的问题。

    【讨论】:

    • 虽然您通常希望避免调整图像大小,但在某些情况下,设备旋转或其他更改是有意义的。在这些情况下,iOS 通常比您的屏幕截图做得更好。换句话说,您看到的这种伪像通常只发生在极端情况下,例如或稍微或大大缩放图像更大或更小。或者,您的图像可能是 8 位 PNG 而不是 24 位 PNG。
    【解决方案2】:

    检查以确保图像的大小与您的 UIImageView 的大小相匹配。如果图像恰好小于目标图像视图,它将拉伸以填充它,这可能会导致像素化。此外,如果您正在为 iPad 运行新的 5.1 模拟器,它将默认使用新的视网膜屏幕,这意味着您需要@2x 大小的图像来防止像素化。

    【讨论】:

      猜你喜欢
      • 2018-08-29
      • 2016-04-22
      • 1970-01-01
      • 2017-07-10
      • 2010-12-27
      • 1970-01-01
      • 1970-01-01
      • 2012-06-27
      • 2020-03-20
      相关资源
      最近更新 更多