2012-07-20 14 views
17

Estoy interesado en hacer una UIAlertView alineado a la izquierda con varias líneas como una lista de anuncios que se vería como la siguiente:¿Cómo hacer una línea múltiple, UIAlertView alineado a la izquierda?

  • línea 1
  • línea 2
  • línea 3

Esto es lo que tengo hasta ahora:

alert = [[UIAlertView alloc] initWithTitle: @"How to use buttons" 
            message: @"line 1. line 2, line 3 " 
            delegate: nil 
         cancelButtonTitle: @"OK" 
         otherButtonTitles: nil]; 

También quiero cambiar el color de la vista de alerta a rojo.

Respuesta

30

Las viñetas están representadas por el código Unicode 0x2022. Lo hice funcionar así usando "\ n" para nuevas líneas:

UIAlertView *alert = [[UIAlertView alloc] 
      initWithTitle: @"How to use buttons" 
      message: [NSString stringWithFormat: @"%C line 1.\n %C line 2,\n %C line 3", (unichar) 0x2022, (unichar) 0x2022, (unichar) 0x2022]; 
      delegate: nil 
      cancelButtonTitle:@"OK" 
      otherButtonTitles:nil]; 

Eso debería funcionar para las viñetas.

Para la alineación a la izquierda, haga lo siguiente:

NSArray *subViewArray = alertView.subviews; 
for(int x = 0; x < [subViewArray count]; x++){ 

    //If the current subview is a UILabel... 
    if([[[subViewArray objectAtIndex:x] class] isSubclassOfClass:[UILabel class]]) { 
     UILabel *label = [subViewArray objectAtIndex:x]; 
     label.textAlignment = NSTextAlignmentLeft; 
    } 
} 

Así que en resumen:

  • "\ n" para la visualización de nuevas líneas.
  • [NSString stringWithFormat:@"%C Line n", (unichar) 0x2022]; para viñetas.
  • Para la alineación , recorra las subvistas de la vista de alerta e identifique qué subvistas son subclases de UILabel. Luego, cambie la alineación de texto de las etiquetas a la alineación izquierda usando label.textAlignment = NSTextAlignmentLeft.
  • Después de hacer todos esto, entonces puede llamar al [alert show];.
+0

gracias, ¿qué hay de la lista del boletín y se alinea a la izquierda? – DavidNg

+0

hola, ahora está centrado en el centro. Quiero alineado a la izquierda con los boletines. Si tiene textos largos, verá que están alineados en el centro – DavidNg

+0

Tenga uno más de mí para su respuesta detallada – JSA986

1

Puede crear una nueva línea insertando \n en su mensaje. Por ejemplo:

@"line 1.\nline 2,\nline 3" 
1

para la nueva línea y la alineación del texto prefieren el @ respuesta de qegal que uno es perfecto, pero si se quiere cambiar el color o personalizar la vista de alertas Tengo una gran clase que se utiliza en lugar de la vista de alerta del sistema simplemente marque this, esto definitivamente funcionará. incluso también le ayudará a obtener un mensaje de líneas múltiples con alineación y lista con viñetas.

Si encontraste algún problema al usarlo, pídele ayuda, seguramente te ayudaré.

feliz :) Codificación

4

a alinear a la izquierda:

NSArray *subviewArray = alert.subviews; 
for(int x = 0; x < [subviewArray count]; x++){ 

    if([[[subviewArray objectAtIndex:x] class] isSubclassOfClass:[UILabel class]]) { 
     UILabel *label = [subviewArray objectAtIndex:x]; 
     label.textAlignment = UITextAlignmentLeft; 
    } 

Para mostrar un fondo rojo detrás de vista de alertas:

alert.backgroundColor=[UIColor redColor]; 
+1

Tomado del código qegals y ajustado. @ DavidNg ¿Puedo sugerir que aceptas su respuesta y tal vez más una de las personas que te han ayudado aquí? – JSA986

+0

Esto no funcionará ahora. ¿Alguna otra solución? – AntiMoron

2

Asegúrese de que utiliza la \ y no normales/.

alt + shift + 7 (en mi teclado)

\ n

Eso debería hacerlo. :-)

Cuestiones relacionadas