2010-09-29 6 views
6

J'ai cherché partout sur le net pour des informations/exemples ...IPhone: Modifier l'interligne dans UITextView?

J'essaie de changer l'interligne du texte à l'intérieur d'un objet UITextView à double interligne. Je pensais que vous pouviez le faire via Core Text, mais je n'ai pas trouvé de solution!

Tout exemple de code ou d'information serait grandement apprécié! Merci!

Répondre

5

Vous n'avez pas besoin de regarder partout sur le net. Un examen de la documentation pour UITextView est suffisant pour déterminer que la modification de l'interligne n'est pas prise en charge par ce contrôle.

Avec Core Text, vous avez un contrôle total sur la disposition du texte que vous dessinez, bien sûr. Mais il serait beaucoup de travail pour réécrire un contrôle similaire à UITextView à partir de zéro.

+0

absolument, comme d'iOS 4.3 UITextView ne soutenir les changements de hauteur de ligne. –

+0

comment je peux changer l'espacement entre multilines? merci – SAKrisT

+0

La réponse de @Mark Suman est utile, après iOS 6. –

4

Cette question a été posée avant iOS 6. Je voudrais poster une réponse mise à jour pour ceux qui voudraient un moyen de le faire.

Cela peut être fait maintenant avec iOS 6 et plus tard en utilisant un NSAttributedString. UITextView accepte maintenant une chaîne attribuée comme l'une de ses propriétés. Vous pouvez effectuer toutes sortes de manipulations de texte avec des chaînes attribuées, notamment l'interligne. Vous pouvez définir les hauteurs de ligne min et max pour l'attribut style de paragraphe de la chaîne.

Consultez le NSAttributedString Class Reference pour plus d'informations.

Voici un échantillon de ce que vous pourriez faire:

NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init]; 
paragraph.minimumLineHeight = 21.0f; 
paragraph.maximumLineHeight = 21.0f; 
NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:@"Test text line 1\nTest text line 2\nTest text line 3" attributes:@{NSParagraphStyleAttributeName: paragraph}]; 
textView.attributedText = attributedString; 
1

Vous pouvez utiliser NSLayoutManagerDelegate. Ajouter ce délégué à votre classe ou ViewController UIView (etc.), puis lorsque vous créez votre UITextView ...

yourTextView.layoutManager.delegate = self 

Ajouter cette méthode déléguée:

func layoutManager(layoutManager: NSLayoutManager, lineSpacingAfterGlyphAtIndex glyphIndex: Int, withProposedLineFragmentRect rect: CGRect) -> CGFloat { 
    return 5 //Whatever you'd like... 
}