objective-c cocoa-touch ios5 uiprogressview

objective c - UIProgressView e imágenes de seguimiento y progreso personalizadas(propiedades iOS 5)



objective-c cocoa-touch (1)

Esto es lo que está pasando:

Las imágenes que le proporcionas a UIProgressView básicamente están siendo empujadas a UIImageViews , y UIImageView está estirando la imagen para llenar el espacio.

Si simplemente haces:

[progressView setTrackImage:[UIImage imageNamed:@"track.png"]];

Entonces obtendrás resultados extraños, ya que se trata de estirar una imagen de 10 px de ancho para rellenar (por ejemplo) una vista de imagen de 100 px de ancho. Esto significa (aproximadamente) que cada píxel de la imagen se repetirá 10 veces. Así que si los píxeles de nuestra imagen fueran:

0123456789

Luego, colocar esa imagen directamente en una vista de imagen de 100px de ancho lo estiraría algo así:

000000000011111111112222222222333333333344444444445555555555...

Esto es lo que te está pasando.

Lo que realmente quieres que suceda es esto:

01234567812345678123456781234567812345678...123456789

En otras palabras, desea que la imagen tenga un borde izquierdo de 1 punto que nunca se estire, que el centro esté en mosaico, y que tenga un borde derecho de 1 punto que nunca se estire. Para hacer esto, necesitarás hacer que la imagen se pueda cambiar de tamaño :

UIImage *track = [[UIImage imageNamed:@"track"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 1, 0, 1)]; [progressView setTrackImage:track];

Si también desea que este mosaico sea apropiado verticalmente, entonces los recuadros de borde deberían ser {1, 1, 1, 1} (suponiendo que desea un borde de 1 punto).

Haga lo mismo con progressImage , y terminará con algo que parece correcto:

tl; dr:

Tus imágenes deben ser redimensionables.

Estoy experimentando con algunas propiedades nuevas en iOS 5 con respecto a UIProgressView . Son:

@property(nonatomic, retain) UIImage *progressImage;
@property(nonatomic, retain) UIImage *trackImage;

Estas nuevas propiedades permiten la personalización de la imagen de " progreso " y " seguimiento ", para que pueda hacer barras de progreso de lujo sin tener que rodar su propio rollo.

Sin embargo, no puedo entender cómo Apple " estira " las imágenes de progreso, ya que la documentación es un poco desagradable / O hay un estándar que no conozco. En cualquier caso, estoy preguntando si alguien me puede ayudar a entender cómo hacer un progreso apropiado y hacer un seguimiento de las imágenes.

Obtengo resultados como este cuando cargo mis imágenes personalizadas, independientemente del tamaño que intente:

Mis medidas son las siguientes:

  • UIProgressView longitud: 226 unidades
  • trackingImage.png: 10px
  • progressImage.png: 7px

Por último, aquí están mis imágenes personalizadas:

progressImage.png

trackImage.png