{"id":2230,"date":"2010-02-26T11:47:17","date_gmt":"2010-02-26T10:47:17","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=2230"},"modified":"2010-02-26T21:13:38","modified_gmt":"2010-02-26T20:13:38","slug":"uilabel-guida-completa-alluso","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/uilabel-guida-completa-alluso\/","title":{"rendered":"UILabel &#8211; Guida completa all&#8217;uso."},"content":{"rendered":"<p>Tutti i tutorial per lo svillupo su iphone iniziano con &#8220;aprite interface builder e trascinate una UILabel..&#8221; ma cosa sono in realt\u00e0 le UILabel? Le UILabel fanno parte della gerarchia dell&#8217;UIKit framework che la Apple ci mette a disposizione.<\/p>\n<p><center><\/p>\n<div id=\"attachment_2232\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/02\/Gerarchia-UILabel-.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2232\" class=\"size-medium wp-image-2232\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/02\/Gerarchia-UILabel--300x178.png\" alt=\"Gerarchia UILabel\" width=\"300\" height=\"178\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/02\/Gerarchia-UILabel--300x178.png 300w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/02\/Gerarchia-UILabel-.png 320w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p id=\"caption-attachment-2232\" class=\"wp-caption-text\">UILabel nel UIKit framework<\/p>\n<\/div>\n<p><\/center><!--more--><\/p>\n<p>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 \u00e8 posizionata la classe che stiamo analizzando \u00e8 indispensabile per capire subito quali sono i metodi e propriet\u00e0 che possiamo utilizzare.<\/p>\n<p>In realt\u00e0 se utilizzassimo le label esclusivamente trascinandole da interface builder potremmo ignorare tutto questo, ma poich\u00e8 noi sviluppatori non viviamo bene senza righe di codice, vediamo in dettagli come creare ed impostare una label a <em>runtime<\/em>.<\/p>\n<p>La prima cosa da fare sar\u00e0 dichiarare un oggetto di tipo UILabel, allocarlo ed inizializzarne il valore, tutto questo viene fatto con queste istruzioni:<\/p>\n<pre lang=\"objc\" line=\"yes\" escaped=\"true\">\r\nUILabel *newLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 30, 200, 100)];\r\n<\/pre>\n<p>Il metodo &#8220;alloc&#8221; \u00e8 ereditato dalla classe NSObject e si occupa semplicemente di riservare nella memoria sufficiente spazio per allocare un oggetto di tipo UILabel, mentre il metodo &#8220;initWithFrame&#8221; \u00e8 un metodo della classe UIView che inizializza e ritorna un nuovo oggetto di tipo UIView delle dimensioni e nella posizione specificata dal parametro.<\/p>\n<p>Qualcuno si sta chiedendo &#8220;Ma noi serve una UILabel..se <em>initiWithFrame<\/em> restituisce una UIView che me ne faccio??&#8221;&#8230;io potrei rispondere con un altra domanda &#8220;se <em>alloc<\/em> restituisce un NSObject come mai lo utilizziamo con qualsiasi oggetto??&#8221;&#8230;la risposta \u00e8 che \u00e8 proprio questo il bello della programmazione ad oggetti, la UILabel \u00e8 una sottoclasse di UIView quindi <strong>\u00e8<\/strong> una UIView&#8230;e possiamo utilizzarla come e dove \u00e8 previsto l&#8217;utilizzo di una UIView. Questo \u00e8 da tenere bene a mente perch\u00e9 \u00e8 un pilastro importante della programmazione ad oggetti.<\/p>\n<p>CGRectMake(x,y,width,height)\u00a0fa parte di un altro framework, il quarz2d, e al momento sorvoliamo sul suo utlizzo, quello che ci serve sapere \u00e8 che restituisce un rettangolo (CGRect) il cui angolo superiore sinistro \u00e8 posizionato nel punto di coordinate x,y e che ha una larghezza pari a <em>width<\/em> pixel ed un&#8217;altezza di <em>height<\/em> pixel. (Trovate <a href=\"http:\/\/www.devapp.it\/wordpress\/t013-disegnamo-una-vista-da-codice.html\" target=\"_blank\">qui<\/a> su devAPP un tutorial fatto veramente bene)<\/p>\n<p>Una volta dichiarata, allocata ed inizializzata la nostra UILabel non resta che visulizzarla, richiamiamo quindi il metodo addSubView sulla vista che dovr\u00e0 contenerla. (addSubView come parametro vuole una UIView..a questo punto dovrebbe essere chiaro perch\u00e8 possiamo passargli una UILabel..)<\/p>\n<pre lang=\"objc\" line=\"yes\" escaped=\"true\">[self.view addSubview:newLabel];<\/pre>\n<p>Vediamo ora una serie di propriet\u00e0 che possono essere impostate per modificare l&#8217;aspetto della UILabel:<\/p>\n<p>Una piccola nota, poich\u00e9 sono dichiarate come propriet\u00e0 possiamo accedervi in lettura e scrittura tramite l&#8217;operatore &#8220;.&#8221; (punto) non \u00e8 necessario utilizzare metodi <em>set<\/em> e <em>get<\/em>.<\/p>\n<table border=\"0\">\n<tbody>\n<tr>\n<td><strong>NOME<\/strong><\/td>\n<td><strong>DESCRIZIONE<\/strong><\/td>\n<td><strong>ESEMPIO<\/strong><\/td>\n<\/tr>\n<tr>\n<td>text<\/td>\n<td>Imposta la stringa di testo visulizzata nella UILabel<\/td>\n<td>\n<pre>myLabel.text = @\"Ciao mondo\"<\/pre>\n<\/td>\n<\/tr>\n<tr>\n<td>font<\/td>\n<td>Imposta il font<\/td>\n<td>\n<pre>myLabel.font = [UIFont boldSystemFontOfSize:25];<\/pre>\n<\/td>\n<\/tr>\n<tr>\n<td>textColor<\/td>\n<td>Imposta il colore del testo<\/td>\n<td>\n<pre>myLabel.textColor = [UIColor blueColor];<\/pre>\n<\/td>\n<\/tr>\n<tr>\n<td>textAlignment<\/td>\n<td>Imposta l&#8217;allineamento del testo<\/td>\n<td>\n<pre>myLabel.textAlignment = UITextAlignmentCenter;<\/pre>\n<\/td>\n<\/tr>\n<tr>\n<td>enabled<\/td>\n<td>Specifica se la UILabel \u00e8 abilitata o meno. Attenzione:<br \/>\nil <em>getter<\/em> per questa propriet\u00e0 \u00e8 &#8220;isEnabled&#8221;.<\/td>\n<td>\n<pre>myLabel.enabled = FALSE;\r\nmyboolValue = [mylabel isEnabled];<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Per le altre propriet\u00e0 vi rimando alla UILabel class reference ufficiale apple che trovate a questo indirizzo:<\/p>\n<p><a href=\"http:\/\/developer.apple.com\/iphone\/prerelease\/library\/documentation\/UIKit\/Reference\/UILabel_Class\/UILabel_Class.pdf\" target=\"_blank\">http:\/\/developer.apple.com\/iphone\/prerelease\/library\/documentation\/UIKit\/Reference\/UILabel_Class\/UILabel_Class.pdf<\/a><\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/supporto-applicazioni\/parole-vietate-di-ignazio-calo\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2264\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/02\/bannerIgnazioc.png\" alt=\"\" width=\"480\" height=\"100\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/02\/bannerIgnazioc.png 480w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/02\/bannerIgnazioc-300x62.png 300w\" sizes=\"auto, (max-width: 480px) 100vw, 480px\" \/><\/a><br \/>\n<\/center><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tutti i tutorial per lo svillupo su iphone iniziano con &#8220;aprite interface builder e trascinate una UILabel..&#8221;&#8230;<\/p>\n","protected":false},"author":53,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[42],"tags":[42,120,43,125,23],"class_list":["post-2230","post","type-post","status-publish","format-standard","hentry","category-framework","tag-framework","tag-tutorial","tag-uikit","tag-uilabel","tag-xcode"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/2230","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/users\/53"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=2230"}],"version-history":[{"count":13,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/2230\/revisions"}],"predecessor-version":[{"id":2277,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/2230\/revisions\/2277"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=2230"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=2230"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=2230"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}