2012-03-14 57 views
9

我显示与上一个UILabel一个UIView这种观点&标签变得非常模糊,一旦它到达这些线路代码:模糊的UIView与CATransform3D仅在视网膜

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

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

在它不是模糊的模拟器,iPad并不是模糊的,iPhone 3GS的不模糊。只有配备Retina显示屏的iPhone4才会变得模糊。甚至在我做3D旋转之前!有没有人在我疯了之前有线索?

回答

23

好的,我找到了一个解决方案。 使用的代码一百种不同的线路使用的图层属性,如层重力或放大倍率和吨的其他解决方案,我突然意外无意中发现了以下2行后:

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

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

+0

这也解释了怪异的行为(仅在视网膜显示设备上不同位置)应用时,我我的CA3DTransforms!谢谢,你节省了好几个小时! – bartolsthoorn 2012-06-18 10:48:06

+0

太棒了!非常感谢你! – JRod 2013-05-22 06:56:51

+1

不适合我。在视网膜上仍然模糊 – zumzum 2014-05-19 00:25:16

3

你有没有为层设置contentsScale匹配[UIScreen mainScreen]. scale?尝试一下。

+0

有趣以前没有听说过这个,现在就试试吧! – 2012-03-21 08:46:00

+0

不幸的是,没有工作...... – 2012-03-21 09:12:39

+0

会给你的赏金抽出时间来回答:) – 2012-03-21 14:08:51

0

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

+0

嗨Sandoze,因为在我的岗位明确地说,我设置使用整数帧,因为我知道,通常这是一个“像素间”的问题:) – 2012-03-21 08:45:39

0

如果您的最终着陆位置旨在为平/转化的,简单地设置变换到CATransform3D身份也将解决这个问题。根据动画的方式,将其中一个3D变换的最终位置设置为0.0仍然可以引入舍入误差并给出模糊的外观。

+0

这对于最终位置是正确的,但是,我希望它不会模糊在动画中,以及:) – 2013-11-19 10:07:00