Changer UILabel police
- Dire que j'ai trois UILabels.
- J'ai créer une police et d'attribuer cette police d'
tous les trois étiquettes.
Maintenant je modifier cette police type/taille etc et attendre les polices de ces étiquettes à changer, ce qui n'arrive pas. En gros, j'ai besoin d'appliquer une police unique à de multiples étiquettes et je sais que cela peut être fait avec une sortie de la collection, mais j'aimerais juste un peu d'aide dans la compréhension de la faille dans ma logique ici, donc voici mon code...
self.labelFont = [UIFont fontWithName:@"System" size:12];
self.label1.font = self.labelFont;
self.label2.font = self.labelFont;
self.label3.font = self.labelFont;
self.labelFont = [UIFont fontWithName:@"Courier" size:30];
Remercier
Vous devez vous connecter pour publier un commentaire.
Dans votre code, vous créez deux objets,
[UIFont fontWithName:@"System" size:12]
, et[UIFont fontWithName:@"Courier" size:30]
.D'abord, votre
labelFont
variable pointe vers le premier objet de police. Ensuite, vous copiez le pointeur dans les missions de polices de trois étiquettes. À ce moment-là, vous avez quatre pointeurs de référence au même objet, à savoir, l'objet retourné par la[UIFont fontWithName:@"System" size:12]
appel.Ensuite, vous modifiez
labelFont
à point à[UIFont fontWithName:@"Courier" size:30]
. Une fois que vous faites cela, l'labelFont
commence pointant vers ce nouvel objet; il n'a plus de points à l'ancien objet. Cependant, les trois étiquettes sont toujours orientés vers la à la ancien de la police, de sorte que leur aspect ne change pas.Cela ne peut être fait immédiatement, vous auriez besoin d'un pointeur de pointeur en mesure de modifier la police de chaque étiquette. Mais quand un setter est appelé, il déclenche une méthode qui peut également causer certains effets secondaires, de sorte que la meilleure façon de le faire est de créer un setter pour gérer le comportement:
-(void)resetFonts
et d'appeler laself.label1.font = self.labelFont
... là. Pour la mise à l'échelle. Et d'appeler laresetFonts
méthode desetLabelFont:
.Vous devriez vous contenter de la sous-classe
Y
UILabel, de modifier la police, puis toutes les étiquettes que vous faites partie de la sous-classe d'avoir votre police. Il est moins de codage et peut vous faire économiser des maux de tête dans le long terme si vous avez+ de 100 étiquettes que vous voulez faire la même police.