2012-07-22 20 views
14

He leído algunos mensajes que recomiendan el uso de:UIGraphicsBeginImageContext debe ser consciente de Retina?

UIGraphicsBeginImageContextWithOptions((image.size), NO, 0.0f) 

en lugar de:

UIGraphicsBeginImageContext(image.size). 

Debido a que el primero utiliza la retina escala en la elaboración, de lo contrario se obtiene imágenes en bloques.

Estoy un poco confundido acerca de cuándo usar o no la opción de escala retina.

Si tengo una fotografía que es de 1000x1000 px, y llamo a UIGraphicsBeginImageContext pasando esas dimensiones, ¿no estoy especificando exactamente cuántos puntos quiero dibujar? ¿Eso esta bien?

¿O debería llamar a UIGraphicsBeginImageContextWithOptions pasando la mitad de las dimensiones (500x500px)? ¿Hace alguna diferencia?

+1

'He leído algunos mensajes que recomiendan el uso de ... Debido a que el primero utiliza la retina escala en la elaboración, de lo contrario obtener imágenes blocky .' - esta nota me ayudó mucho. ¡Gracias! –

Respuesta

11

Usted puede obtener el valor de la escala de su dispositivo mediante el siguiente método

[[UIScreen mainScreen] scale] 

Con esta información, puede decidir el número de puntos que le gustaría dibujar.

+0

Lo sé, pero lo que me gustaría ahora es si se usa: UIGraphicsBeginImageContext (1000x1000px) es diferente de usar UIGraphicsBeginImageContextWithOptions ((500x500px), NO, 0.0f). – jvic

+0

no es retina solo importante cuando se muestra la imagen, no se dibuja? Es decir, creo que no importa el tamaño de la imagen, siempre que cuando la muestre, la muestre en una vista con la mitad del tamaño (retina). – jvic

+1

@jvic Ambos le dan una imagen de 1000x1000px. Pero creo que lo diferente es cuando se usa UIGraphicsBeginImageContext (1000x1000px), el dibujo que se muestra en la pantalla es con 1000x1000 puntos, pero UIGraphicsBeginImageContextWithOptions ((500x500px), NO, 0.0f) con 500x500 puntos, esa es mi suposición. –

10

Puede crear el contexto imagen como esta:

UIGraphicsBeginImageContextWithOptions(size, false, UIScreen.mainScreen().scale) 
+1

De acuerdo con los documentos: _ "Si especifica un valor de 0.0, el factor de escala se establece en el factor de escala de la pantalla principal del dispositivo." _. Por lo tanto, usar '0.0 'allí, en lugar de' UIScreen.mainScreen(). Scale', tiene el mismo efecto, pero se beneficiará de las optimizaciones de bajo perfil. –

+0

Gracias por esta información, veo que los documentos dicen que la escala = 0.0 es igual a la escala de la pantalla actual, pero no puede encontrar nada acerca de las optimizaciones bajo el capó. Puedes elaborar ? –

Cuestiones relacionadas