ios - Borrosa UILabel cuando se agrega programáticamente
ios5 blurry (3)
Estoy agregando un UILabel a una vista con fines de carga. Sin embargo, se vuelve borrosa después de que lo agregué. Lo extraño es que tengo el mismo código para una vista de carga que se carga en la parte superior de un UITableViewController y funciona bien allí. Sin embargo, este encima de un UIViewController está borroso.
Este es mi código:
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];
Además del problema de float / int, llamar a setShouldRasterize
en la vista principal de UILabel también puede hacer que aparezca este problema.
Para aquellos de ustedes que no pudieron usar las respuestas anteriores, descubrí que si desactiva la función de autoresizingmask
, se llama el método setShouldRasterize
.
[loadingText setTranslatesAutoresizingMaskIntoConstraints:NO];
Por lo tanto, si comenta esta línea, se mostrará correctamente.
Su etiqueta está borrosa porque el marco está usando números flotantes.
Para forzar el valor de los enteros para tu cuadro solo haz:
[loadingText setFrame:CGRectIntegral(loadingText.frame)];
También puede convertir todos los valores que componen su marco a int
, pero CGRectIntegral
hace todo el trabajo por usted.