2010-08-16 6 views
11

¿Alguien sabe cómo mostrar un cuadrado redondeado con un indicador de actividad giratoria? Se usa en muchas aplicaciones. Si no sabes de lo que estoy hablando, parece el indicador cuando cambias el volumen en tu Mac pero con un fondo más oscuro. No estoy seguro si está integrado en iOS o si alguien lo hizo.Indicador de actividad grande en iPhone

como el de este post pero no pantalla completa sólo el indicador de actividad How to create a full-screen modal status display on iPhone?

+0

Lea esto. http://developer.apple.com/iphone/library/documentation/uikit/reference/UIActivityIndicatorView_Class/Reference/UIActivityIndicatorView.html – Gary

Respuesta

14

Su captura de pantalla es probablemente un uso del módulo DSActivityView de David Sinclair. Específicamente, el componente DSBezelActivityView de él. O si no, es una copia cercana.

http://www.dejal.com/developer/dsactivityview

utilizo DSActivityView todo el tiempo. Gran biblioteca. Mezcle esa cosa mientras baja datos, mantiene contentos a los usuarios y clientes.

+0

Excelente clase. Voy a tenerlo a mano para cierta estandarización de UX en mis aplicaciones. Es extremadamente elegante y no agrega mucha sobrecarga. – geerlingguy

0

En realidad, está buscando utilizar dos subclases de UIView y una imagen .png personalizada para obtener el aspecto que desea. La caja translúcida gris sería un objeto UIImageView, para obtener el efecto que está buscando, necesita un archivo .png de un cuadrado gris con esquinas redondeadas, no necesita ser el tamaño final, siempre que haya al menos un píxel de borde recto entre las esquinas funcionará bien. A continuación, lo cargará como un UIImage con el UIImage stretchableImageWithLeftCapWidth: topCapHeight: método, esto le permite especificar las porciones superior e izquierda de la imagen que deben permanecer iguales, y se ampliará un segmento de 1 píxel en cada dirección para llenar la vista de UIImage en la que usa la imagen. http://www.bit-101.com/blog/?p=2275 tiene un gran ejemplo de cómo funciona esto. Así que crea un UIImage, luego crea un UIImageView usando esta imagen, establece su propiedad opaca en NO y la propiedad alpha en algo que te quede bien. Añada una subvista de su vista actual. Ahora solo necesita agregar el indicador de progreso de giro, esto es aún más fácil, simplemente cree un UIActivityIndicatorView nuevo y agréguelo como una subvista del UIImageView que ya ha creado. El mismo método básico se usa para crear casi cualquier elemento redimensionable en una aplicación de iOS. Hay algunos ejemplos de su uso para botones en el código de ejemplo de UICatalog de Apple.

5

No creo que la captura de pantalla sea mi DSBezelActivityView; las métricas se ven un poco diferentes. Pero es muy similar.

Nota: DSActivityView y sus subclases no usan imágenes ni plumines; son código puro

Para responder a la pregunta original, sería fácil modificar DSBezelActivityView para omitir el fondo gris a pantalla completa. Usted puede hacerlo creando una subclase y reemplazando el método -setupBackground así:

- (void)setupBackground; 
{ 
    [super setupBackground]; 

    self.backgroundColor = [UIColor clearColor]; 
} 

Espero que esto ayude!

19

Esto es lo que uso cuando quiero mostrar ese tipo de indicadores.

UIView *loading = [[UIView alloc] initWithFrame:CGRectMake(100, 200, 120, 120)]; 

loading.layer.cornerRadius = 15; 
loading.opaque = NO; 
loading.backgroundColor = [UIColor colorWithWhite:0.0f alpha:0.6f]; 

UILabel *loadLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 25, 81, 22)]; 

loadLabel.text = @"Loading"; 
loadLabel.font = [UIFont boldSystemFontOfSize:18.0f]; 
loadLabel.textAlignment = UITextAlignmentCenter; 
loadLabel.textColor = [UIColor colorWithWhite:1.0f alpha:1.0f]; 
loadLabel.backgroundColor = [UIColor clearColor]; 

[loading addSubview:loadLabel]; 
[loadLabel release]; 

UIActivityIndicatorView *spinning = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; 
spinning.frame = CGRectMake(42, 54, 37, 37); 
[spinning startAnimating]; 

[loading addSubview:spinning]; 
[spinning release]; 

loading.frame = CGRectMake(100, 200, 120, 120); 

Luego, solo tiene que agregar la vista de 'carga' a la vista de su elección y la obtiene.

Espero que esto es lo que necesitabas.

2

Pruebe este método simple, Funciona bien para mí ....

UIActivityIndicatorView *activityIndicator= [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(0, 0, 50, 50)]; 
activityIndicator.layer.cornerRadius = 05; 
activityIndicator.opaque = NO; 
activityIndicator.backgroundColor = [UIColor colorWithWhite:0.0f alpha:0.6f]; 
activityIndicator.center = self.view.center; 
activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray; 
[activityIndicator setColor:[UIColor colorWithRed:0.6 green:0.8 blue:1.0 alpha:1.0]]; 
[self.view addSubview: activityIndicator]; 
Cuestiones relacionadas