为什么PNG图像有时会变得模糊,具体取决于它在视图中的位置

Jon*_*an 7 iphone png core-animation blur

我注意到,当使用IB将PNG图像放入视图和/或将这些图像设置为视图周围的不同位置时,图像有时会出现轻微模糊.

在大多数情况下,我可以通过在图像位置添加.5像素来弥补模糊.

[lbLiteButton.layer setPosition:CGPointMake(140.5,159.5)];
Run Code Online (Sandbox Code Playgroud)

有时我必须像上面那样调整x和y.有时我只需要调整x y.

我记得在某处读到这与图像的大小以及核心动画的工作原理以及与半像素的关系有关......但我无法在任何地方找到这篇文章!?

".5像素"解决方案的问题在于每个PNG图像的大小不同,因此您无法重复使用自定义动画,因为您必须为每个不同的图像自定义它.

  1. 有没有办法确保无论我在哪里放置或动画我的图像,我都不会得到任何模糊的位置?
  2. 有没有人有这方面的任何信息?

谢谢!

Bra*_*son 14

position视图的层的性质是基于它的anchorPoint属性.默认情况下,即(0.5,0.5),表示图层的锚点位于其中心.如果您的视图(及其图层)是奇数个像素宽或高,则为该位置设置一个整数值将导致视图的原点不整合,从而导致您看到的模糊.

要解决这个问题,您可以通过获取视图的所需中心位置,减去视图宽度的一半,舍入该值,然后添加视图宽度的一半,并重复高度来找出位置的整数版本.您还anchorPoint可以将视图的图层设置为(0,0)并根据视图的原点定位视图.

这可能也与超级视图的错位有关.要诊断这一点,您可以使用Instruments中的Core Animation乐器,并选择Color Misaligned Images选项.它应该为应用程序中非像素对齐的任何视图或图层着色.