9

我正在显示一个带有 UILabel 的 UIView,并且这个视图和标签一旦到达这些行代码就会变得模糊:

CATransform3D transform = CATransform3DIdentity;      
transform.m34 = (1.0/-500);
view.layer.transform = transform;

在整个应用程序中,我使用 CA3DRotations 和其他东西,这以前从未发生过。另外,我只使用整数设置视图的框架和标签!所以这不是半像素问题或类似的问题,我知道这会导致大多数模糊问题,但不是我的!

在模拟器上不模糊,iPad不模糊,iPhone3GS不模糊。只有在配备 Retina 显示屏的 iPhone4 上,它才会变得模糊。甚至在我进行任何 3D 旋转之前!在我发疯之前有人知道吗?

4

4 回答 4

26

好吧,我找到了解决方案。在使用图层属性(例如图层重力或放大率以及大量其他解决方案)使用了一百行不同的代码之后,我突然偶然发现了以下两行:

self.layer.shouldRasterize = TRUE;
self.layer.rasterizationScale = [[UIScreen mainScreen] scale];

这就是解决方案!对于未来的每个人,您在视网膜显示器上的视野是否模糊?用这个!

于 2012-03-21T13:44:42.490 回答
3

您是否设置contentsScale了图层以匹配[UIScreen mainScreen]. scale?尝试一下。

于 2012-03-16T15:08:46.880 回答
0

您的视图可能在“像素之间”(例如,中心为 [12.5, 10])。尝试四舍五入他们的位置,看看是否有帮助。

于 2012-03-20T16:23:14.887 回答
0

如果您的最终着陆位置是平坦的/未转换的,只需将转换设置为 CATransform3D 身份也可以解决问题。根据动画的方式,将 3D 变换之一的最终位置设置为 0.0 仍会引入舍入误差并给出模糊的外观。

于 2013-11-18T20:53:24.580 回答