SMsoft – informatica e dintorni

varie su OSX, GNU/Linux e l'Open Source

Objective-c: Disabilitare ARC, durante la compilare, per un solo file

Objective-c ha introdotto ARC negli ultimi framework. A mio avviso è un buon sistema, che libera lo sviluppatore da alcune incombenze.

Questo però crea qualche problema di compatibilità, usando librerie o framework più vecchi.

In questo caso la soluzione migliore è disabilitare l’analizzatore ARC, durante la compilazione, per i file .m che hanno problemi di compatibilità.

Come si procede. Cliccare sul Target (in alto a sinistra nell’elenco dei files), poi selezionare il Targets nella seconda colonna visualizzata, poi cliccare su Build Phases ed infine cliccare su Compile Sources che visualizza l’elenco dei files che compongono il progetto. Scorrere l’elenco per trovare il file per cui disabilitare ARC e fare doppio click nella parte destra della riga, in corrispondenza della colonna Compiler Flags. Viene visualizzato un box, al cui interno bisogna scrivere -fno-objc-arc

Ora si può ricompilare ed il file escluso non darà più messaggi di errore ARC.

enjoy!

Objective-c: Visualizzare uno UIActionSheet

Per la visualizzazione di uno UIActionSheet, il box con vari pulsanti che si apre dal basso, basta utilizzare il seguente codice:
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
//SMS
if(buttonIndex == 0){

}

//EMAIL
if (buttonIndex == 1){

}else{

}

}

-(IBAction)emailAction{

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Invia con" delegate:self cancelButtonTitle:@"Annulla" destructiveButtonTitle:nil otherButtonTitles:@"SMS", @"Email",nil];

actionSheet.actionSheetStyle = UIActionSheetStyleDefault;

[actionSheet showInView:self.view];

[actionSheet release];

}

Allineamento del testo verticale per una UILabel?

Creando una UILabel con più righe, l’allineamento verticale del testo viene automaticamente impostato al centro. Per allineare il testo in alto, il sistema più semplice è ridimensionare a runtime l’altezza della UILabel.
Ipotizzando che la UILabel si chiami label, e che la sua posizione sia 20 – 20, il codice per farlo è:

 objc |  copy code |? 
1
CGSize textSize = [label.text sizeWithFont:label.font constrainedToSize:CGSizeMake(label.frame.size.width, MAXFLOAT) lineBreakMode:label.lineBreakMode];
2
label.frame = CGRectMake(20.0f, 20.0f, textSize.width, textSize.height);

enjoy!

I nomi e le risoluzioni per le immagini durante lo sviluppo IOS per iPhone/iPad

Spesso mi chiedono “quale deve essere il nome per l’icona di un’applicazione su iPhone?” e “quale deve essere la risoluzione?”.

Bene, ho predisposo il seguente schema, spera chiarisca le idee:

Risoluzione   Nome                            Descrizione
512x512       iTunesArtwork                   Immagine per iTunes
1024x1024     iTunesArtwork@2x                Immagine per iTunes Retina
57x57         Icon.png                        Home screen per iPhone < 4
114x114       Icon@2x.png                     Home screen per iPhone 4 Retina
72x72         Icon-72.png                     Home screen per iPad
144x144       Icon-144.png                    Home screen per iPad 3 Retina
29x29         Icon-Small.png                  Spotlight e Settings
50x50         Icon-Small-50.png               Spotlight per iPad
58x58         Icon-Small@2x.png               Spotlight e Settings per iPhone 4 Retina
320x480       Default.png                     Splashscreen per iPhone < 4
640x960       Default@2x.png                  Splashscreen per iPhone 4 Retina
768x1004      Default-Portrait.png            iPad - Se non è stato specificato il file Default-PortraitUpsideDown.png, questo avrà precedenza
1536x2008     Default-Portrait@2x.png         iPad 3 Retina
768x1004      Default-PortraitUpsideDown.png  iPad
1024x748      Default-Landscape.png           iPad - Se non è stato specificato il file Default-LandscapeLeft.png o Default-LandscapeRight.png, questo avrà la precedenza
2048x1496     Default-Landscape@2x.png 	      iPad 3 Retina
1024x748      Default-LandscapeLeft.png       iPad
1024x748      Default-LandscapeRight.png      iPad
Icone nella Toolbar e Navigation Bar  20x20 (40x40 Retina)
Icone nella TabBar 30x30 (60x60 Retina)

enjoy!

Objective-c: Impostare il background color di UITableViewCell

Per impostare il colore di background di una UITableViewCell è possibile utilizzare diversi metodi, ma solo uno permette di colorare completamente l’intera cella (compreso il fondo delle scritte e degli eventuali accessori della cella stessa).

Il seguente codice:

 bash |  copy code |? 
01
NSUInteger row = [indexPath row];
02
    if(row % 2){
03
        cell.backgroundColor = [UIColor whiteColor];
04
    }
05
    else{ 
06
        cell.backgroundColor =[[UIColor alloc] 
07
             initWithRed:((float)(222.0 / 255.0)) 
08
             green:((float)(227.0 / 255.0)) 
09
             blue:((float)(231.0 / 255.0)) alpha:1.0f];
10
    }

inserito nel metodo - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath, permette di colorare, a righe alterne, il fondo della cella di grigio.

Per usare invece un’immagine, es greyBarTC.png, che riempia completamente lo sfondo della cella, si può usare il codice:

cell.backgroundColor = [UIColor colorWithPatternImage:
[UIImage imageNamed:@"greyBarTC.png"]];

 

In alcuni casi, purtroppo, questo non è sufficiente. Basterà allora creare il nuovo seguente metodo - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath:

 bash |  copy code |? 
1
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
2
{
3
    NSUInteger row = [indexPath row];
4
    if(row % 2){
5
       [cell setBackgroundColor:[UIColor whiteColor]];
6
    } else { 
7
       [cell setBackgroundColor:[[UIColor alloc] initWithRed:((float)(222.0 / 255.0)) green:((float)(227.0 / 255.0)) blue:((float)(231.0 / 255.0)) alpha:1.0f]];
8
    }
9
}

enjoy!

Nuovo Malmware per Android: UpdtBot

Non sono un grande fan di Android, semplicemente perché ho scelto di abbracciare un’altra tecnologia per lo sviluppo di applicazioni mobili e quindi non conoscendolo/usandolo, non posso ovviamente apprezzarne il funzionamento.

In questo articolo voglio però parlare di UpdtBot che, scoperto da NQ Mobile Security Research Center, ha già afflitto oltre 160 mila smartphone. Sembrerebbe che attualmente siano solo dispositivi cinesi.

Il malware in questione invierebbe agli utilizzatori di android un sms nel quale viene segnalato un aggiornamento del sistema operativo. Ovviamente Android non segnalerebbe mai un proprio aggiornamento in questo modo, ma evidentemente le persone meno attente, non ci faranno caso e finiranno per cliccare sul link contenuto nell’SMS. La cosa più grave è lo scopo del virus, che dovrebbe essere quello di effettuare chiamate ed sms a tariffa maggiorata e rubare codici bancari ed inserire un keylogger.

Qui mi permetto di ribadire il classico consiglio:
- leggete attentamente quello che viene riportato nei messaggi;
- non cliccate su link relativi a software che non conoscete;
- prima di installare qualsiasi cosa, leggete su Internet se ci sono segnalazioni negative a proposito del software che state per installare.

Un altro dato allarmante è quelli di Lookout Security, secondo cui sono “Raddoppiati i malware su Android negli ultimi sei mesi”.

enjoy!

Page optimized by WP Minify WordPress Plugin