2009-03-23 8 views
3

Je voudrais utiliser la police système, mais avec un début personnalisé, mais la propriété principale d'un UIFont est en lecture seule. Existe-t-il un moyen de créer une police système avec une valeur principale personnalisée?UIFont avec une personnalisation?

J'essaye d'afficher plusieurs lignes avec un UILabel, mais le début par défaut est trop étroit. (\ n \ n est trop large)

S'il n'y a aucun moyen, alors j'ai besoin de créer plusieurs UILabels mais cela semble un peu exagéré.

+0

Le UILabel n'est pas ce que vous voulez. UILabel n'obéit même pas au leader de l'UIFont. – jamie

Répondre

2

Je pense que vous ne pouvez pas faire cela. UIFont est assez étroitement contraint.

Si vous avez vous-même les sauts de ligne, il est assez trivial de dessiner la chaîne vous-même plutôt que de créer plusieurs UILabels. Vous pouvez générer des sous-chaînes à l'aide de – componentsSeparatedByString: et de les restituer à chacun des incréments principaux spécifiés à l'aide de l'ajout UIKit NSString: – drawAtPoint:withFont:. Si vous devez générer votre propre emballage, c'est difficile - voir this related question.

-2

Cela pourrait être fait en mettant en caisse une catégorie personnalisée sur UIFont et en remplaçant la propriété par un paramètre personnalisé. J'essaie toujours de faire ça.

+0

Non, cela n'a pas pu être fait. En plus de mener a été déprécié dans OS4 –

1

Il existe un moyen de personnaliser l'interligne dans une ligne multiple UILabel. Au lieu d'utiliser l'attribut text de l'étiquette, utilisez la propriété attributedText. Le texte attribué peut avoir un style de paragraphe avec une valeur lineSpacing négative pour rapprocher les lignes. Voici un exemple:

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; 
paragraphStyle.lineSpacing = -4; 

NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:yourStringHere]; 
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, titleText.length)]; 
yourUILabel.attributedText = attributedString; 
Questions connexes