iOS segue模糊文字

时间:2014-08-26 12:20:12

标签: ios objective-c uilabel blur

我有问题。我创建了一个透明背景和中心视图(消息框)的视图:

该框名为iboShadowBox

enter image description here

在我的控制器类中,我正在为消息框的圆角添加代码并为其添加阴影。

最后我正在这样做:

self.iboShadowView.center = self.view.center;

将消息框居中。

客户说文字很模糊。

我在设置和不设置中心的情况下检查了文本:

设置中心:

enter image description here

没有设置中心:

enter image description here

左侧没有设置中心,右侧有设置中心

enter image description here

问题是,设置视图中心会导致文本模糊吗?以及如何解决它?

修改

试图替换这个:

self.iboShadowView.center = self.view.center;

用这个:

CGPoint center = self.view.center;
CGFloat scale = [UIScreen mainScreen].scale;
self.iboShadowView.center = CGPointMake(roundf(center.x * scale) / scale, roundf(center.y * scale) / scale);

再次显示调试中的ping背景...(这意味着没有帮助)

1 个答案:

答案 0 :(得分:0)

您的中心点可能导致文本显示在非像素对齐的位置。这样做的效果是您的标签渲染时具有更夸张的抗锯齿效果,因此外观稍微模糊一些。

检查此理论的一种简单方法是在模拟器中运行应用程序并选择调试>菜单中的颜色未对齐图像。渲染的图像不是像素对齐的,将突出显示品红色。它可能不一定是外部视图未对齐,它可能是导致文本的任何叶视图,因此检查外部视图的框架是否像素对齐可能是不够的。

解决这类问题的一种方法是手动像素对齐框架,例如使用如下函数:

CGRect CGRectAlign(CGRect rect)
{
    CGFloat scale = [UIScreen mainScreen].scale;
    return CGRectMake(roundf(rect.origin.x * scale) / scale,
                      roundf(rect.origin.y * scale) / scale,
                      roundf(rect.size.width * scale) / scale,
                      roundf(rect.size.height * scale) / scale);
}