XCode Tips&Trick #8 – UIAlertView con colore di sfondo personalizzato

Eccoci ancora una volta con un piccolo tip sulle UIAlertView. Questi sono sicuramente tra i componenti più utilizzati e anche più versatili, ma non è facile cambiarne l’aspetto grafico.

Può capitare, infatti, che la classica UIAlertView “stoni” con il design della nostra applicazione, rendendo il tutto un po’ meno piacevole. Personalizzarne il colore e lo stile non è facile ed immediato, ma ho trovato su Internet una classe che permette di creare delle alert con colori personalizzati, semplificandoci davvero il lavoro!

Eccovi un esempio di ciò che tale classe permette di fare:

Per implementare questo componente create una nuova classe di nome “CustomAlert” e inserite nel file .h questo codice:

e nel file .m questo codice:

Per utilizzare delle UIAlertView personalizzate dovrete utilizzare questa classe nello stesso modo in cui utilizzare gli alert tradizionali, eccovi un esempio:

Questo è l’unico modo che ho trovato per personalizzare il colore di una UIAlertView, e devo dire che i risultati non sono male. Se siete a conoscenza di altri metodi fatemelo sapere nei commenti!

Aggiornamento 21/01/2011: il codice è stato aggiornato (come nella versione originale) per funzionare anche con iOS 4.2 😉

I meriti di tale classe sono di kwigbo, trovate l’articolo originale a questo indirizzo.

Andrea Busi | @bubidevs

Laureato in Ingegneria Informatica, ho fondato nel 2008 questo piccolo blog, in cui racconto le mie esperienze e i miei pensieri sul mondo dell'informatica. Nella vita mi occupo di sviluppo software, e nel tempo libero continuo a coltivare la mia passione per il mondo iOS.

ommenti a “XCode Tips&Trick #8 – UIAlertView con colore di sfondo personalizzato

  1. FM ha detto:

    Ciao,
    il codice è interessante e può tornare utile.
    Mi viene un dubbio però.
    Non è che poi si vada contro le User Interface Gudelines e la Apple rifiuti l’app?

    Ho poi un altro paio di dubbi riguardo il codice.
    Perché il metodo setBackgroundColor:withStrokeColor: è dichiarato come metodo di classe?
    E perché i puntatoti ai due colori fillColor e borderColor vengono dichiarati come statici al di fuori dell’interfaccia della classe?
    E in ultimo, chi li rilascia poi quegli oggetti, dato che viene fatto il retain?
    In pratica, non si poteva mettere i due colori come variabili d’istanza e usare il metodo come d’istanza?
    Scusa l’ignoranza, ma non riuscendo a capire bene la cosa volevo maggiori deluciadzioni.
    Grazie!

  2. Fast ha detto:

    grazie

  3. Ragazzetto ha detto:

    Bella questa !
    Grazie Andrea !
    Mi capita proprio a fagiolo per la mia app

  4. Andrea Busi ha detto:

    @Fast: prego 😉

    @FM: perchè “setBackgroundColor:withStrokeColor” sia definito statico non l’ho ben capito nemmeno io, si sarebbe potuto fare un metodo d’istanza classico.. io ho trovato l’esempio così, se riuscite ad apportare miglioramenti aggiorno l’articolo 😉

    P.S: anche il creatore della classe sul suo blog ha detto che non è perfetta, quindi penso si possa migliorare in qualche aspetto 😉

  5. Ragazzetto ha detto:

    Intanto ringrazio per la guida , in volevo comunicare che ho utilizzato la guida nella mia app che è stata appena approvata , quindi sembra non ci siano problemi con le UIG !

  6. Andrea Busi ha detto:

    @Ragazzetto: ottimo, grazie mille della conferma 😉

  7. Ragazzetto ha detto:

    Prego !

    🙂

  8. Ragazzetto ha detto:

    Aggiorno !
    Con il 4.2 beta la classe non funziona più correttamente , ci sono problemi di visualizzazione !

  9. Andrea Busi ha detto:

    @Ragazzetto: grazie della segnalazione! proverò a darci un’occhiata! 😉

  10. Ragazzetto ha detto:

    Andrea hai mica avuto modo di darci l’ occhiata ?
    Intanto ti posso dire che è stato aggiunto un messaggio anche sull articolo di kwigbo per cumunicargli il mal funzionamento !

  11. Andrea Busi ha detto:

    @Ragazzetto: ottimo!! provo a guardarci e nel caso aggiorno l’articolo 😉

  12. Andrea Busi ha detto:

    Articolo aggiornato, ora il codice è compatibile anche con iOS 4.2 😉 (testato su simulatore, funziona senza problemi)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

*