J'essaie d'obtenir une nstring cassé dans des lignes pour s'adapter à une largeur souhaitée (comme cela se produirait à l'intérieur de Taillewithfont: contraintTosize: code>). Y a-t-il une meilleure façon de le faire que deviner où les pauses se produiraient dans taillewithfont code>? P>
4 Réponses :
update: strong> Ceci s'applique apparemment uniquement sur la plate-forme MAC. Bien que NslayoutManager soit spécifiquement référencé dans le guide de dessin de chaîne de l'iPhone (à partir de décembre 2009), ni elle ni Nsattributedstring ne sont disponibles sur la plate-forme iPhone. Désolé pour le bruit. P>
NslayoutManager A> Est votre ami si vous souhaitez diviser la ficelle elle-même en lignes d'une certaine largeur, avec un ensemble donné d'attributs (c'est-à-dire que vous devez connaître les endroits réels où la chaîne est enveloppée). P>
Si vous cherchez seulement à envelopper des lignes lorsque dessin em> et que vous ne vous souciez pas d'où, les méthodes de Nsattributedstring (ajoute AppKit) - Drawinrect: ou < Un href = "http://developer.apple.com/mac/library/documentation/cocoa/reeference/ApplicationKit/classes/nsattributedstring_appkitadditions/reference/reference.html#//apple_ref/doc/uid/20000167-cjbifbbb" rel = "NOFOOLS NOREFERRER"> - DrawwithPrect: Options:
Ni NslayoutManager ni Nsattributedstring ne sont disponibles sur l'iPhone.
Je ne vais pas dessiner les lignes (immédiatement), donc ni Nsattribudingstring ni nstring + uikit ajouts ne vont aider.
Ole: déroutant. NslayoutManager est spécifiquement référencé dans le Guide de programmation String dans la bibliothèque de l'iPhone DeV Center: développeur.apple.com/iphone/library/documentation/cocoa/...
Si NslayoutManager code> est en effet indisponible, vous pouvez être bloqué avec une solution plus inefficace: en commençant par le premier mot de la chaîne, ajoute à chaque mot ultérieur et à l'aide de la taille . > (etc.) Méthode sur la chaîne résultante. Lorsque la hauteur des modifications apportées code> CGSize retournées CODE>, le mot le plus récemment annexe était celui qui a provoqué la pause de ligne et vous pouvez ainsi diviser la chaîne là-bas. P>
le NSString Uikit ajouts pourrait correspondre à vos besoins, en particulier p>
- (CGSize)drawInRect:(CGRect)rect withFont:(UIFont *)font
lineBreakMode:(UILineBreakMode)lineBreakMode
alignment:(UITextAlignment)alignment;
Consultez les commentaires sur la question et la réponse de Joshua ci-dessous - Soulignez les lignes N'est-ce pas le problème. Il a en fait besoin de savoir où sont les pauses de la ligne, dans le but de dessiner un arrière-plan qui ne s'étend qu'à la fin de chaque ligne.
Pourriez-vous aller dans un peu plus de détails sur la raison pour laquelle vous avez besoin des lignes séparées? Si vous voulez simplement dessiner la chaîne dans un espace donné, cela est assez simple.
Je crée un fond - comme celui que vous obtenez lors de la sélection du texte - pour une étiquette. La largeur varie pour chaque ligne (avec une longueur différente), donc j'en aurai besoin séparément.