Imágenes de seguimiento y progreso personalizadas de UIProgressView en iOS 7.1
ios7 (8)
iOS 7.1 parece haber roto las propiedades de imagen personalizadas en UIProgressView
. El código que se utiliza para personalizar con éxito las vistas de progreso ahora produce la apariencia predeterminada.
Configuré un proyecto de ejemplo que hace esto en viewDidLoad
:
self.progressView.frame = CGRectMake(self.progressView.frame.origin.x, self.progressView.frame.origin.y, self.progressView.frame.size.width, 9);
UIImage *img = [UIImage imageNamed:@"progress_bar_fill.png"];
img = [img resizableImageWithCapInsets:UIEdgeInsetsMake(0, 4, 0, 4)];
self.progressView.progressImage = img;
img = [UIImage imageNamed:@"progress_bar_empty.png"];
img = [img resizableImageWithCapInsets:UIEdgeInsetsMake(0, 4, 0, 4)];
self.progressView.trackImage = img;
Todavía tengo la apariencia predeterminada. He avanzado y verificado que img
no es nulo como se esperaba. ¿Que esta pasando?
ACTUALIZACIÓN: Hay un OpenRadar para esto, y también he archivado mi propio radar completo con un proyecto de muestra.
ACTUALIZACIÓN 2: Como lo señala Axy a continuación, debe agregar esto para que JEProgressView funcione correctamente:
_progressBar.tintColor = [UIColor clearColor];
Con Xcode5 ahora también es posible hacer imágenes de tamaño variable con Interface Builder
. Podemos especificar la dirección de cambio de tamaño y el contenido insertado y seleccionar el área a ser enmarcada dentro del generador de interfaces.
Para aprovechar esta función, debe utilizar el Asset Catalog
para la imagen que desea redimensionar.
Estás en lo correcto. Este error ha estado presente desde que 7.1 apareció por primera vez en Xcode 5.1 semilla 1. Envié (y volví a enviar) el mismo error para las 5 semillas de Xcode 5.1, y ahora en Xcode 5.1. Pero Apple no lo arregló.
Por favor envíe este error también! Puede referirse a mi error si lo desea: 15547259. ¡Mientras más, mejor! Considero que esto es una rotura grave, porque significa que una aplicación que funcionaba bien ahora está dañada (si usa una vista de progreso con una imagen de progressImage
).
Esto es muy molesto. No encontré una manera de arreglar esto sin subclasificar UIProgressView
.
De todos modos, así es como solucioné esto: https://gist.github.com/JohnEstropia/9482567
Tendrá que cambiar las apariciones de UIProgressView
a JEProgressView
, incluidas las de los NIB y los guiones gráficos.
Básicamente, deberías forzar la asignación de las imágenes directamente a las UIProgressView
s de UIImageView
.
La subclase es necesaria para anular las layoutSubviews
, donde se ajustan las alturas de las vistas de imagen según los tamaños de imagen.
He intentado implementar los archivos JEProgressView de John Estropia, pero no funciona. Debo haber hecho algo mal, pero soy un poco nuevo en esto. ¿Puede alguien explicar exactamente cómo hacer esto? Sé que puede ser una pregunta estúpida, pero después de muchas búsquedas en Google, pensé que preguntar era la única manera.
Hola amigos, he usado el siguiente código para agregar UIProgressView en mi aplicación:
UIProgressView *progressView;
progressView = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault];
progressView.progressTintColor[UIColor colorWithRed:187.0/255 green:160.0/255 blue:209.0/255 alpha:1.0];
[[progressView layer]setCornerRadius:10.0f];
[[progressView layer]setBorderWidth:2.0f];
[[progressView layer]setMasksToBounds:TRUE];
progressView.clipsToBounds = YES;
[[progressView layer]setFrame:CGRectMake(30, 295, 260, 25)];[[progressView layer]setBorderColor[UIColor whiteColor].CGColor];
progressView.trackTintColor = [UIColor clearColor];
[progressView setProgress: (float)count/15 animated:YES];
Espero que el código sea útil para usted, lo encontré aquí: Fuente del código
Para mí esto funcionó para iOS versión 7.1 y superior para la imagen de progreso:
if ([[UIDevice currentDevice] systemVersion] >= 7)
self.progressView.tintColor = [UIColor colorWithPatternImage:img];
También estoy atrapado este error. Intenté arreglarlo jugando con las propiedades de UIProgressView pero sin resultado. La solución de John Estropia publicada anteriormente, tampoco me funciona, tal vez no sea compatible con el diseño automático, así que hice mi propia solución temporal para evitar este error. https://github.com/ninjaproger/AKProgressView
Utilicé la solución de John Estropia, pero mostraba la barra de tinte azul en una superposición a la mía, con un efecto gráfico bastante extraño.
yo añadí
_progressBar.tintColor = [UIColor clearColor];
y me fue bien Gracias por la solución hombre.