仅在RETINA上使用CATransform3D模糊UIView

时间:2012-03-14 13:56:31

标签: iphone catransform3d blurry retina-display

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

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

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

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

4 个答案:

答案 0 :(得分:25)

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

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

这是解决方案!对于未来的每个人来说,视网膜显示屏上的视图是否模糊?用这个!

答案 1 :(得分:3)

您是否已将图层的contentsScale设置为与[UIScreen mainScreen]. scale匹配?试试吧。

答案 2 :(得分:0)

你的观点可能是“像素之间”(例如,中心是[12.5,10])。尝试围绕他们的位置,看看是否有帮助。

答案 3 :(得分:0)

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