geek space web solutions

Customiser le bouton Retour d'une application en Objective-C

Mardi, 17 Avril 2012 12:43
custom back button
Customiser son application pour iPhone ou iPad peut s'avérer fastidieux ! J'explique dans cet article comment customiser le bouton "Retour" d'une application développée en Objective-C avec une image.


Le principe est de remplacer le bouton par défaut par un bouton customisé avec une image. Il faut créer un conteneur pour pouvoir placer le nouveau bouton dans la barre de navigation. Dans l'exemple ci-dessous, je donne également la fonction pour retourner à la "vue" précédente.





Ci-dessous, les 2 images pour les 2 résolutions d'iPhone à ajouter dans le répertoire "Resources" dans X-Code :
Pour la gestion des 2 résolutions vous devez ajouter "@2x" au nom de l'image de grande résolution pour qu'elle soit automatiquement prise en charge par les iPhone en 640x960 (iPhone 4) !


custom back button


custom back button


- (void)replaceBackButton:(NSString *)strlabelButton {
   
    // création d'une image
     UIImage *btnImg = [UIImage imageNamed:@"btn-back.png"];
    

    // création d'un bouton
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
    

    // ajout de l'image sur le bouton
    [btn setBackgroundImage:btnImg forState:UIControlStateNormal];

    
    // On définit le label
    UILabel *labelBackButton = [[UILabel alloc] initWithFrame:CGRectMake(4, 3, btnImg.size.width, btnImg.size.height)];
    labelBackButton.backgroundColor = [UIColor clearColor];
    labelBackButton.textColor = [UIColor colorWithHexString:@"787878"];
    labelBackButton.textAlignment = UITextAlignmentCenter;
    labelBackButton.font = [UIFont fontWithName:FONT_HELVETICA_NEUE_77_BC size:14];
    labelBackButton.text=strlabelButton; //@"Ambiances";
    labelBackButton.shadowColor=[UIColor whiteColor];
    labelBackButton.shadowOffset=CGSizeMake(0,1);

   
    // On ajoute le label dans le bouton
    [btn addSubview:labelBackButton];

    
    // place et taille du bouton
    btn.frame = CGRectMake(0, 0, labelBackButton.frame.size.width, labelBackButton.frame.size.height);

    
    // Ajout d'une fonction déclenchée par le clic sur le bouton
    [btn addTarget:self action:@selector(backView) forControlEvents:UIControlEventTouchUpInside];

    
    // On crée le container
    UIView *containerBack=[[UIView alloc] init];

    // On ajoute le bouton
    [containerBack addSubview:btn];

    
    //Les positions X-Y ne fonctionneront pas ici
    containerBack.frame=CGRectMake(0, 0, labelBackButton.frame.size.width+14, labelBackButton.frame.size.height);

    
    // On ajoute le container à l'emplacement du bouton retour (leftBarButtonItem);
    UIBarButtonItem *aBarButtonItemBack=[[UIBarButtonItem alloc] initWithCustomView:containerBack];

    self.navigationItem.leftBarButtonItem=aBarButtonItemBack;
    

    // Les release
    [labelBackButton release];
    [containerBack release];
    [aBarButtonItemBack release];

}



/* Cette fonction est déclenchée par le bouton "back", elle permet de revenir à la vue précédente */
- (void)backView {

    UINavigationController *navController = self.navigationController;
    [navController popViewControllerAnimated:YES];

}

 

Ajouter un Commentaire


Code de sécurité
Rafraîchir

Sections

Éditeur de fichier XML en ligne


"XML Manager" est un éditeur sécurisé permettant d'administrer en ligne un fichier XML.
Il fournit des fonctions avancées de recadrage et de redimensionnement des images...

Sondages

Pensez-vous que le HTML5 puisse complètement remplacer Flash ?
 
Seriez-vous intéressé par un éditeur d'XML en ligne ?
 

Paypal

paypal

Code du plugin Joomla AutoSEO 1.2 par www.geek-space.fr