Blurry UILabel при добавлении программно
Я добавляю UILabel к виду, предназначенному для загрузки. Тем не менее, он становится размытым после того, как я добавил его.
Странно то, что я просто примерно тот же код для загрузочного представления, который загружается ontop 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];
Ответы
Ответ 1
Ваша метка размыта, потому что фрейм использует плавающие числа.
Чтобы заставить целое число значение для вашего фрейма просто:
[loadingText setFrame:CGRectIntegral(loadingText.frame)];
Вы также можете использовать все свои значения, составляющие ваш кадр, в int
, но CGRectIntegral
выполняет всю работу за вас.
Ответ 2
Помимо проблемы с float/int, вызов setShouldRasterize
в родительском представлении UILabel также может вызвать эту проблему.
Ответ 3
Для тех из вас, кто не мог использовать предыдущие ответы, я обнаружил, что если отключить функцию autoresizingmask
, она называется методом setShouldRasterize
.
[loadingText setTranslatesAutoresizingMaskIntoConstraints:NO];
Таким образом, если вы прокомментируете эту строку, она будет корректно отображаться