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!

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!

IOS 5.1 sempre più diffuso

Dal successivo grafico è possibile vedere come la recente versione di IOS 5.1 ha raggiunto quasi il 70% di diffusione in 15 giorni dal rilascio:

C’è poi un misero 2% di utenti con IOS 3.x, ed un 20% con IOS 4.x; il restante utilizza IOS 5.x

Se state per sviluppare un’app per iPhone, tenetene conto!!!
(fonte)

enjoy!

Estrarre immagini da una app per iPhone/iPad

Se avete provato a decomprimere un file .ipa, l’archivio che contiene un’app, avrete notato i vari files che contengono le immagini. Provando ad aprire i files, non sarà però possibile vederne il contenuto, perché verrà mostrato qualcosa che sembra un’immagine trasparente.
Questo avviene perché durante la compilazione, XCode ottimizza le immagini e non le rende più visualizzabili da Anteprima. Il tool che il sistema utilizza per l’ottimizzazione è pngcrush e se avete l’SDK installato, ne troverete una versione in: (xcode 4.3.0) – /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/pngcrush
ed in:
(xcode 4.3.1) – /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/pngcrush

. Per poter visualizzare le immagini, bisogna togliere l’ottimizzazione. Vediamo come fare.
Ipotizziamo che l’immagine da ripristinare si chiami play.png e che sia situata sul Desktop, possiamo utilizzare il seguente comando:
bin/pngcrush -q -revert-iphone-optimizations -d ~/Desktop/ ~/Desktop/play.png

In questo modo l’immagine verrà salvata nella cartella Desktop.

Page optimized by WP Minify WordPress Plugin