2012-04-02 13 views

Respuesta

80

CGRectIntegral para convertir todos los valores decimales a sus equivalentes enteros
ver la imagen puede ser que usted puede entender enter image description here

¿Cómo lo arreglo?

frame = CGRectIntegral(frame); 

-O-

myTextView.frame = CGRectIntegral(myTextView.frame); 

ver este for more information of CGRectIntegral

+1

La imagen de la izquierda es un poco borrosa porque el marco se establece en un límite de píxeles. Entonces el origen es algo así como 20.5, 8.5. CGRectIntegral lo vuelve a ajustar a 20, 8. – ariopolis

+3

Si desea que las imágenes borrosas se resalten en púrpura en el simulador de iOS, elija Depurar> Imágenes desalineadas de color. De esta forma, no tendrás que entrecerrar los ojos para descubrir qué cosas son borrosas. – JoJo

+0

Es importante agregar: CGRectIntegral es para rellenar/dibujar búferes de píxeles. Las formas contorneadas se centran alrededor de sus coordenadas, por lo que puede necesitar coordenadas no integrales (por ejemplo, 0,5 en pantallas de 1x) para que se vean nítidas. Vea aquí para una explicación más detallada: http://orangejuiceliberationfront.com/are-your-rectangles-blurry-pale-and-have-rounded-corners/ – uliwitness

7

Un uso particular es fijar marcos que no se alinean perfectamente con los píxeles de la pantalla.

Ver esta pregunta: UITextField blurred text

Si una etiqueta o un campo de texto tiene un marco que no es píxeles alineados cuando se representa a la pantalla, el texto aparecerá borrosa. Esto puede suceder si calcula el cuadro utilizando la división (por ejemplo, para centrarlo en una vista principal).

CGRectIntegral eliminará la parte fraccionaria de la estructura, la fijación de este problema. Sin embargo, tenga en cuenta que con las visualizaciones de retina, un valor de cuadro de .5 está alineado con los píxeles, pero CGRectIntgral aún eliminará la parte fraccionaria.

13

CGRectIntegral método se utiliza para crear rect entero. Quiero decir supongamos que si calculas el marco en la aplicación, puedes obtener el valor de los marcos en float.

Ajuste de valor flotante de marco a algunos UIElement como UILabel haría que el texto se ve borroso. Para evitar esto, usamos CGRectIntegral mirada Éntrenos en el siguiente ejemplo,

NSLog(@"%@",NSStringFromCGRect( CGRectIntegral(CGRectMake(0, 15.6, 16.1, 20.2)))); 

Esto imprimirá, {0,15}, {17,21}.

Esta explicación se encuentra en el archivo de cabecera.

/* Expand `rect' to the smallest rect containing it with integral origin and 
    size. */ 
Cuestiones relacionadas