Подтвердить что ты не робот

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];
4b9b3361

Ответ 1

Ваша метка размыта, потому что фрейм использует плавающие числа.

Чтобы заставить целое число значение для вашего фрейма просто:

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

Вы также можете использовать все свои значения, составляющие ваш кадр, в int, но CGRectIntegral выполняет всю работу за вас.

Ответ 2

Помимо проблемы с float/int, вызов setShouldRasterize в родительском представлении UILabel также может вызвать эту проблему.

Ответ 3

Для тех из вас, кто не мог использовать предыдущие ответы, я обнаружил, что если отключить функцию autoresizingmask, она называется методом setShouldRasterize.

[loadingText setTranslatesAutoresizingMaskIntoConstraints:NO];

Таким образом, если вы прокомментируете эту строку, она будет корректно отображаться