2009-02-15 15 views

Respuesta

27

Creo que su mejor opción es olvidarse de personalizar la vista de UIAlert y crear una vista personalizada usted mismo.

Por un lado, lo que está mostrando realmente no es una "alerta", por lo que es contrario a lo que UIAlertView está diseñado para ser. Esto significa que está cambiando el paradigma de la interfaz de usuario en el usuario, lo que nunca es una buena idea.

En segundo lugar, sería mucho más fácil animar una vista personalizada en su lugar que tratar de hackear UIAlertView para que haga lo que quiera.

+3

No solo eso, pero tratar de personalizar UIAlertView es una de las cosas que Apple puede rechazar con bastante frecuencia. –

4

No hay componentes incorporados para esto. UIAlertView solo debe tener texto y botones según el documento HIG.

Deberá crear su propia vista y agregarle controles. El ejemplo de HeadsUpUI en el SDK muestra cómo mostrar una vista personalizada tipo menú como una superposición.

Espero que ayude.

11

Primero necesita agrandar el cuadro de alerta para acomodar sus controles, pero tiene que colocarse en el centro.

Para esto, en lugar de establecer el tamaño del marco, el texto del mensaje con "\ n" es necc. e.g .:

alert = [[UIAlertView alloc] initWithTitle:@"Rate this picture." 
message:@"Tap a star to rate.\n\n\n\n " /*------ look at here!!----*/ 
delegate:self 
cancelButtonTitle:nil 
otherButtonTitles:nil]; 

A continuación, utilice un UIAlertViewDelegate para la vista de alerta.

anular su, viewWillAppear: agregue sus botones y configure sus marcos manualmente en la posición deseada.

O: crear una vista entera con un controlador de vista, y añadir la vista al cuadro de alerta como:

[myalertview addSubvew:mycomplexalert]; 

Hope esto vendrá en su ayuda :)

estoy usando alerta cajas para la entrada de calificación con imágenes de estrellas, twitter, etc. retroalimentación fb

ACTUALIZACIÓN iOS7:

para iOS 7, crear su propio punto de vista con el com componentes y establecerla como vista de accesorios de la alertview:

[alert setValue:imageView forKey:@"accessoryView"]; 

Su :-) eso es sencilla

+1

El truco "\ n \ n \ n \ n" no parece funcionar con la versión actual de iOS 7 Beta 1. No estoy seguro de si esto cambiará en el iOS 7 final. – Raphael

+0

Para iOS 7, cree su propia vista y configúrela como la vista de accesorios de la vista de alerta: [setValue de alerta: imageView forKey: @ "accessoryView"]; –

+0

Creo que podría haber una razón por la cual "accesoryView" no es públicamente accesible. Por lo tanto, esto podría romperse en versiones futuras o podría ser rechazado por Apple. – Raphael

6

This tutorial explica cómo subclase UIAlertView para lograr un cuadro de texto de entrada. Explica cómo ampliar la vista, agregar subvistas (como cuadros de texto o imágenes) y realizar una transformación para mover la caja hacia arriba en la pantalla.

+0

Esto NO explica cómo cambiar el tamaño de la vista, pero es útil para mostrar cómo agregar el cuadro de texto y usar las cosas ingresadas en ello. – sasquatch

6

Escribí un reemplazo UIAlertView perfecto casi de píxeles, que también es totalmente configurable.Eche un vistazo a CODialog si se ajusta a sus necesidades.

+0

genial @Erik Aigner ... sin embargo, acabo de recibir un proyecto antiguo (iOS6) que usa su biblioteca y tenemos que migrarlo a iOS7 ... su biblioteca usa la apariencia de iOS6 ... alguna idea de cómo puedo actualizarlo para ver/sentir como iOS 7? – abbood

+0

@abbood simplemente anula los métodos de dibujo –

+0

@ugh man que es un montón de líneas de código ... ¿sabe usted si Apple aceptaría una aplicación que tenga su biblioteca teniendo en cuenta que solo aceptará código compilado contra iOS 7? – abbood