2011-06-06 10 views
6

¿Cuándo debo ir con gráficos centrales sobre imágenes para hacer un UIButton personalizado? ¿Son los gráficos centrales más rápidos? Además de la independencia de la resolución, ¿hay algún otro beneficio importante?Core Graphics Vs Imágenes para un botón personalizado

+0

Puede aclarar lo que entendemos por hacer un botón personalizado con gráficos centrales y hacer uno con imágenes? –

Respuesta

11

Pros de núcleo gráfico:

  • Código para la elaboración de un botón, probablemente será más pequeño que un archivo de imagen.
  • Permite la modificación dinámica, pequeños cambios sin agregar una segunda imagen completa.
  • Como mencionaste, la resolución es independiente.
  • Menos memoria intensiva (no asigna memoria para contener cada píxel).

Pros de imágenes:

  • creación de la imagen en un editor lo general, será más sencillo que escribir código que dibuja a la perfección. (Si utiliza algo que no sean colores sólidos, podría ser mucho más simple.)
  • El editor le permitirá ver la imagen de antemano sin volver a compilar.
  • Más fácil de trabajar con otros objetos integrados (es decir, puede convertirlo en el fondo de un UIButton).

En cuanto al tiempo de ejecución, no estoy seguro. Supongo que CG sería más rápido para el dibujo simple, donde la mayoría de los píxeles no se cambian, pero las imágenes serían más rápidas para el dibujo más complejo donde se cambian la mayoría de los píxeles (suponiendo que utilice el formato PNG, por lo que se optomized De lo contrario, CG probablemente sería siempre más rápido).

Como solución de compromiso, puede dibujar en una imagen una vez y utilizar esa imagen para dibujar en el futuro. Esto le permitiría obtener algunos de los beneficios de cada uno.

5

pensamientos adicionales a ughoavgfhw's comment:

  1. Las imágenes se pueden almacenar en caché (como cuando se utiliza [UIImage imageNamed:]). De modo que ni siquiera usará más memoria para los nuevos botones, excepto el primero que se muestra. (Y sin asignaciones, excepto la memoria para un nuevo puntero).

  2. Usted puede utilizar las imágenes extensibles de creación de botones y evitar algunos (no todos y no siempre) problemas con la resolución de la dependencia:

    UIImage *myImg = [UIImage imageNamed:@"myImg.png"]; 
    UIImage *myImgStretchable = [myImg stretchableImageWithLeftCapWidth:10 topCapHeight:10]; 
    [myButton setBackgroundImage:myImgStretchable forState:UIControlStateNormal]; 
    
Cuestiones relacionadas