Lavorando con Interface Builder può venire spontaneo usare un oggetto UIImageView per impostare lo sfondo del nostro view controller. In alternativa è possibile eliminare questo oggetto, risparmiando così un po’ di memoria, e sfruttare la view associata al view controller. Basta inserire nel nostro view controller:
Articoli con Tag ‘UIImageView’
Very short snippet: la UIView per visualizzare un’immagine
CaptureView: catturare una UIView
CaptureView permette di clonare, sotto forma di immagine, una qualsiasi vista (UIView o UIImageView) in modo rapido. Quello che si ottiene è un oggetto CaptureView che può essere utilizzato come una normale UIView (quindi visualizzato). Catturare lo “schermo”, o una sua porzione, può essere utile in molti casi. Una volta ottenuta la nuova “immagine”, questa potrà essere manipolata senza preoccparsi del suo contenuto.
Spesso si hanno più view innestate ed effetuare effetti o trasformazioni sulla view madre che le contiene tutte non è sempre una soluzione ottimale.
Very short snippet: memorizzare una serie di immagini in NSUserDefaults
Per memorizzare un’immagine nelle NSUserDefaults è sufficiente riuscire ad ottenere un puntatore NSData ai dati dell’immagine. In questo modo potremmo ricostruire la nostra immagine in qualsiasi momento successivo.
Nell’esempio mostrato qui sotto viene sfruttato un array che contiene al massimo 4 immagini. Ogni immagine nuova viene messa in testa e quella in eccesso eliminata.
Objective-C: come ruotare un’immagine nello spazio 3D
La classe UIView espone un puntatore al layer (CALayer), un oggetto di più basso livello con innumerevoli potenzialità. Il layer mette a disposizione tutta una serie di metodi e proprietà legati alla visualizzazione del contenuto della view. Ad esempio è possibile manipolare il contenuto di una view nello spazio tridimensionale. Nell’esempio che riporto è interessante notare che il codice è semplice, e il tutto è realizzato sfruttando Interface Builder:

Personalizzare le sezioni in un UITableView Grouped
Quando utilizziamo una UITableView in stile Grouped potremmo aver necessità di personalizzare la grafica dei titoli delle sezioni, come California o New York dell’esempio qui sotto.

Per farlo basta utilizzare il codice seguente, inserendolo nel delegato, cioè nella classe che risponde al protocollo UITableViewDelegate:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | // Restituisco una mia View personalizzata, in questo caso un oggetto // di tipo UILabel - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { UILabel *label = [[[UILabel alloc] initWithFrame:CGRectZero] autorelease]; label.font = [UIFont boldSystemFontOfSize:20]; label.textAlignment = UITextAlignmentCenter; label.shadowColor = [UIColor blackColor]; label.shadowOffset = CGSizeMake(1, 1); label.text = @"Sezione"; // Sostituire con un array come al solito label.textColor = [UIColor whiteColor]; label.backgroundColor = [UIColor clearColor]; label.opaque = NO; return label; } // Bisogna supportare anche questo message altrimenti non funziona - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return 44; } |
È importante inserire anche heightForHeaderInSection, altrimenti non funziona.
Note interessanti
Nella creazione della nostra UILabel, che volendo potrebbe essere anche un oggetto più complesso come una UIView o UIImageView, ho utilizzato per inizializzare il frame CGRectZero che corrisponde a CGRectMake(0,0,0,0).
iPhone: eliminare l’effetto ombra durante lo scroll in un UIWebView
In questo ultimo periodo ho lavorato su tre applicazioni per Apple iPhone, praticamente in contemporanea. Due sono state già approvate da Apple e si trovano su App Store: TheFirst e iMakeLove.
In entrambe le applicazioni ho adottato l’uso di un oggetto UIWebView per visualizzare le istruzioni.
L’oggetto UIWebView si è ilevato davvero comodo in questo caso. Mi ha permesso di visualizzare in modo rapido e gradevole una testo, corredandolo in caso di immagini e qualsiasi altra cosa sia visualizzabile su una pagina Web (Flash escluso su iPhone).

L’oggetto UIWebView è davvero versatile e necessita di pochissime impostazioni per essere utilizzato. Unico difetto riscontrato è la presenza di una misteriosa ombra che appare quando si effettua uno scroll fuori dall’area del controllo, sia in basso che in alto:

Dopo varie ricerche ho capito che questo comportamento dipende dalle SDK, in particolare dagli ultimi aggiornamenti. Inoltre Apple non ha rilasciato nessuna dichiarazione ufficiale su come rimuoverlo, al contrario ha bollato come codice non permesso una serie di hack che fanno uso di funzioni riservate o non documentante. Alla fine avevo lasciato perdere, sia per questioni di tempo, sia perchè le soluzioni sembravano tutte fuori dagli schemi Apple.
Fortunatamente mi è arrivata la soluzione, spero abbastanza regolare, che sembra proprio risolvere il problema (grazie ad Adolfo):
1 2 3 4 5 6 | // webView è il controllo UIWebView id scroller = [webView.subviews objectAtIndex:0]; for (UIView *subView in [scroller subviews]) if ([[[subView class] description] isEqualToString:@"UIImageView"]) subView.hidden = YES; |
Come sottolineato da Adolfo questo è comunque un hack che potrebbe smettere di funzionare con futuri rilasci delle SDK.








Ultimi Commenti
Marco: Ti ringrazio moltissimo, mi hai illuminato
ho risolto impostando [cc_objc] //OptionViewController.m -...
Giovambattista Fazioli: @Marco: Ti consiglio un approccio credo più corretto. Se hai eseguito il subclass del tab...
Marco: Scusa lo spam.. ho notato che c’è un errore.. ecco la correzione [cc_objc] /** PrimaClasse.h **/ #import...
Marco: dimenticato.. in [cci]OptionViewController[/cci ] il [cci]@syntetize[/cci] del delegato l’ho messo
luigi: molto chiaro e semplice devo ammettere che anche scrivendo da un pà difficilmente uso delegati creati da...