【问题标题】:Blurry UILabel when added programmatically以编程方式添加时模糊 UILabel
【发布时间】:2011-12-25 08:07:37
【问题描述】:

我正在将 UILabel 添加到用于加载目的的视图中。但是,添加后它变得模糊。 奇怪的是,我在 UITableViewController 上加载的加载视图的代码几乎相同,并且它在那里工作得很好。然而,UIViewController 之上的这个是模糊的。

这是我的代码:

float x = (self.view.frame.size.width-20)/2;
float y = (self.view.frame.size.height-70)/2;

// Add loading and sub text
UILabel *loadingText = [[UILabel alloc] initWithFrame:CGRectMake(10, round(y+30), round(self.view.frame.size.width-20), 21)];
[loadingText setTextAlignment:UITextAlignmentCenter];
[loadingText setNumberOfLines:0];
[loadingText setFont:[UIFont systemFontOfSize:17]];
[loadingText setText:NSLocalizedString(@"Please wait...\nWe are processing your request", @"LoadingPage")];
[loadingText sizeToFit];
[loadingText setBackgroundColor:[UIColor clearColor]];
[loadingText setCenter:self.view.center];
[loadingText setTag:2];

[view addSubview:loadingText];

【问题讨论】:

    标签: ios ios5 uilabel blurry


    【解决方案1】:

    您的标签很模糊,因为框架使用了浮动数字。

    要强制为您的框架设置整数值:

    [loadingText setFrame:CGRectIntegral(loadingText.frame)];
    

    您也可以将构成框架的所有值转换为 int,但 CGRectIntegral 会为您完成所有工作。

    【讨论】:

    • #define CGPointIntegral(point) CGPointMake((int)point.x,(int)point.y) 是将 CGPoint 成员转换为整数的快速宏。
    • 旋转标签怎么样?即使使用积分框架,它们仍然显得模糊(正如预期的那样,它变得非积分):stackoverflow.com/questions/10492367/…
    • 对我不起作用...是否所有超级视图都需要使用CGRectIntegral 进行布局?
    • 嗨 NSZombie 事件添加 CGRectIntegral 我得到模糊的文本。
    • 尝试布置包含您的标签的超级视图。如果超级视图本身使用浮动,您的标签可能会模糊(尽管我从未见过这种行为)。
    【解决方案2】:

    除了float/int的问题,在UILabel的父视图上调用setShouldRasterize也会导致这个问题的出现。

    【讨论】:

    • 这是为我解决的问题。谢谢
    【解决方案3】:

    对于那些无法使用之前答案的人,我发现如果我关闭autoresizingmask 功能,它就会调用setShouldRasterize 方法。

    [loadingText setTranslatesAutoresizingMaskIntoConstraints:NO];
    

    因此,如果您将此行注释掉,它将正确显示

    【讨论】:

    • 就我而言,我必须同时应用这个和接受的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-17
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多