【问题标题】:Blurry UIView with CATransform3D only on RETINA仅在 RETINA 上使用 CATransform3D 模糊 UIView
【发布时间】:2012-03-30 23:53:15
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: iphone catransform3d blurry retina-display


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 嗨 Sandoze,正如我在帖子中明确指出的那样,我使用整数设置帧,因为我知道通常这是一个“像素间”问题 :)
        【解决方案4】:

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

        【讨论】:

        • 这对于最终位置是正确的,但是,我希望它在动画期间也不会模糊:)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多