2009-03-12 5 views
2

Je me demande s'il est possible de changer une couleur par défaut de boutons dans mon application avec quelques lignes de code? Il peut être vraiment ennuyeux de changer manuellement la couleur de chaque bouton. Surtout si vous en avez beaucoup. Par exemple, je souhaite que tous mes boutons soient orange au lieu du blanc d'origine. Nous vous remercions d'avance, Ilya.Changement de couleur de tous les éléments d'interface du même type

Répondre

3

Je crains qu'il n'y ait pas de paramètre global.

Il est possible de parcourir toutes les vues et sous-vues d'un objet, d'interroger leur type, puis d'appliquer des couleurs personnalisées selon les besoins. Cela vous permet d'avoir une place dans votre application à laquelle vous transmettez vos vues et tout est appliqué.

Quelque chose comme;

//! Applies application specific styles to UIKit objects 
void applyStyles(UIView* view) 
{ 
    for(UIView* subview in view.subviews) 
    { 
    // test type of view 
    if([[subview class] isEqualToString:@"UIButton"] == YES) 
    { 
     // apply colors for buttons 
    } 
    else if([[subview class] isEqualToString:@"SomethingElse"] == YES) 
    { 
     // apply colors for something else 
    } 
    } 
} 
+0

Je pense que ces tests devraient être '[subview isKindOfClass: [UIButton class]]' – benzado

1

je recommande la création d'une sous-classe de UIButton (MyCustomButton) et d'appliquer ce que les éléments stylistiques que vous voulez dans le constructeur de votre sous-classe.

Passant UIButtons à une sorte de « StyleManager », comme suggéré ci-dessus est une meilleure approche que de dire

button.backgroundColor = [UIColor orangeColor]; 

mais vous devez toujours passer par votre code et dire quelque chose comme

[StyleManager applyStyles:viewThatContainsButton]; 

Cette répand la solution d'appliquer des styles à probablement tous les contrôleurs et certains éléments de vue dans votre base de code. Créer une sous-classe vous permet d'appliquer le style avec une ligne de code, pas une ligne par vue.

collecte la solution à votre problème dans une classe élimine cette prolifération de solution et devrait permettre de réduire l'entretien effort aussi bien.

Questions connexes