我正在将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];
答案 0 :(得分:58)
您的标签模糊,因为框架使用浮动数字。
要强制框架的整数值,请执行以下操作:
[loadingText setFrame:CGRectIntegral(loadingText.frame)];
您还可以将构成框架的所有值投射到int
,但CGRectIntegral
会为您完成所有工作。
答案 1 :(得分:15)
除了float / int问题之外,在UILabel的父视图上调用setShouldRasterize
也会导致出现此问题。
答案 2 :(得分:3)
对于那些无法使用之前答案的人,我发现如果我关闭了autoresizingmask
功能,则会调用setShouldRasterize
方法。
[loadingText setTranslatesAutoresizingMaskIntoConstraints:NO];
因此,如果你注释掉这一行,它将正确显示