UILabel – Guida completa all’uso.
Tutti i tutorial per lo svillupo su iphone iniziano con “aprite interface builder e trascinate una UILabel..” ma cosa sono in realtà le UILabel? Le UILabel fanno parte della gerarchia dell’UIKit framework che la Apple ci mette a disposizione.
Come possiamo vedere in questa immagine, ereditano direttamente da UIView che a loro volta ereditano da UIResponder e da NSObject. Capire a quale livello della gerarchia è posizionata la classe che stiamo analizzando è indispensabile per capire subito quali sono i metodi e proprietà che possiamo utilizzare.
In realtà se utilizzassimo le label esclusivamente trascinandole da interface builder potremmo ignorare tutto questo, ma poichè noi sviluppatori non viviamo bene senza righe di codice, vediamo in dettagli come creare ed impostare una label a runtime.
La prima cosa da fare sarà dichiarare un oggetto di tipo UILabel, allocarlo ed inizializzarne il valore, tutto questo viene fatto con queste istruzioni:
UILabel *newLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 30, 200, 100)];
Il metodo “alloc” è ereditato dalla classe NSObject e si occupa semplicemente di riservare nella memoria sufficiente spazio per allocare un oggetto di tipo UILabel, mentre il metodo “initWithFrame” è un metodo della classe UIView che inizializza e ritorna un nuovo oggetto di tipo UIView delle dimensioni e nella posizione specificata dal parametro.
Qualcuno si sta chiedendo “Ma noi serve una UILabel..se initiWithFrame restituisce una UIView che me ne faccio??”…io potrei rispondere con un altra domanda “se alloc restituisce un NSObject come mai lo utilizziamo con qualsiasi oggetto??”…la risposta è che è proprio questo il bello della programmazione ad oggetti, la UILabel è una sottoclasse di UIView quindi è una UIView…e possiamo utilizzarla come e dove è previsto l’utilizzo di una UIView. Questo è da tenere bene a mente perché è un pilastro importante della programmazione ad oggetti.
CGRectMake(x,y,width,height) fa parte di un altro framework, il quarz2d, e al momento sorvoliamo sul suo utlizzo, quello che ci serve sapere è che restituisce un rettangolo (CGRect) il cui angolo superiore sinistro è posizionato nel punto di coordinate x,y e che ha una larghezza pari a width pixel ed un’altezza di height pixel. (Trovate qui su devAPP un tutorial fatto veramente bene)
Una volta dichiarata, allocata ed inizializzata la nostra UILabel non resta che visulizzarla, richiamiamo quindi il metodo addSubView sulla vista che dovrà contenerla. (addSubView come parametro vuole una UIView..a questo punto dovrebbe essere chiaro perchè possiamo passargli una UILabel..)
[self.view addSubview:newLabel];
Vediamo ora una serie di proprietà che possono essere impostate per modificare l’aspetto della UILabel:
Una piccola nota, poiché sono dichiarate come proprietà possiamo accedervi in lettura e scrittura tramite l’operatore “.” (punto) non è necessario utilizzare metodi set e get.
| NOME | DESCRIZIONE | ESEMPIO |
| text | Imposta la stringa di testo visulizzata nella UILabel |
myLabel.text = @"Ciao mondo" |
| font | Imposta il font |
myLabel.font = [UIFont boldSystemFontOfSize:25]; |
| textColor | Imposta il colore del testo |
myLabel.textColor = [UIColor blueColor]; |
| textAlignment | Imposta l’allineamento del testo |
myLabel.textAlignment = UITextAlignmentCenter; |
| enabled | Specifica se la UILabel è abilitata o meno. Attenzione: il getter per questa proprietà è “isEnabled”. |
myLabel.enabled = FALSE; myboolValue = [mylabel isEnabled]; |
Per le altre proprietà vi rimando alla UILabel class reference ufficiale apple che trovate a questo indirizzo:

| Stampa l'articolo | Questo articolo è stato pubblicato da Ignazioc il 26 febbraio 2010 alle 11:47, ed è archiviato come Framework. Puoi seguire i commenti a questo post attraverso RSS 2.0. Puoi pubblicare un commento o segnalare un trackback dal tuo sito. |
























circa 5 mesi fa
ma io vorrei sapere una volta fatta l’applicazione come faccio a caricarla sul mio dispositivo?
circa 5 mesi fa
Per caricare le app sul tuo iPhone devi registrarti come developer. Il costo è di 99 dollari l’anno. Trovi una guida su questo stesso sito
circa 5 mesi fa
Bellissima iniziativa… se ci fate una guida per ogni oggetto è il massimo!!!
Complimenti per la guida.. continuate così!!!
circa 5 mesi fa
Quindi se un’ UILabel è un’ UIView posso usare tutte le proprietà e i metodi delle View?
circa 5 mesi fa
certamente! questo è un concetto base della OOP. le UILabel sono anche UIView, ma anche UIResponder e NSObjects.
Per esempio il metodo “retainCount” che restituisce il valore dell’omonima proprietà è dichiarato nella classe NSObjects ma può essere richiamato a partire da qualsiasi oggetto che derivi da NSObject.
circa 5 mesi fa
Complimenti ignazioc ottima guida.
Se riesci a farne altre non è affatto male…anche io che sono abbastanza pratico a volte faccio casini…anche perchè sono molto primo e non ho voglia di leggermi la documentazione
circa 5 mesi fa
pigro…nn primo
circa 5 mesi fa
Scusate la mia ignoranza, ma sono nuovo. Anche le uilabel possono essere personalizzate graficamente come avete spiegato nella guida precedente sui textfield?
circa 5 mesi fa
grazie a tutti, perchè non proponete un argomento oggetto da studiare nel prossimo tutorial? UIButton?
@Monk: no, le UILabel di default posseggono meno proprietà delle textfield, di solito si usa mettere delle imgview sotto le label per personalizzarle.
circa 5 mesi fa
Ah ok.. Quindi lo sfondo della label trasparente fa vedere l’immagine sotto.. Bella, non ci avevo mai pensato! Grazie.. Ne attendiamo altri allora
anche uibutton grazie ancora
circa 5 mesi fa
Ottima guida ma credo che per i label continuerò a usare IB
circa 5 mesi fa
comodista!!
circa 5 mesi fa
UIButton sarebbe una figata…. mi sto perdendo un po nel realizzare bottone personalizzati…:) magari cosi ne capisco di piu…
grazie mille!!
circa 5 mesi fa
ok, prossimo tutorial UIButton.
una risposta al volo: metti una immagine sotto e crea un bottone trasparente..risolvi in un attimo
circa 3 mesi fa
allora non sono l’unico che fa cosi..:) che ne dici di pickerView nel prox??