2009-12-27 5 views

Répondre

1
UILabel *label; 
label.lineBreakMode = UILineBreakModeMiddleTruncation; 
+0

Avez-vous même lu la question? –

+0

Peut-être que je l'ai mal compris. L'OP reçoit actuellement '' Une ligne de ... '' et ils veulent '' Certains ... de texte '', ce qui leur donnera la troncature du milieu – kubi

+0

Je cherchais une troncature moyenne, au moins tu as aidé moi avec cette réponse: D – Andy

1

moins qu'il y ait une méthode pratique encore mieux sur l'iPhone que je ne sais pas, je pense que la chose la plus facile et la plus souple à faire serait de sous-classe UILabel et mettre en œuvre votre propre dessin et troncature, en utilisant les diverses extensions sizeWithFont pour déterminer la largeur de la chaîne et chaque ensemble de guillemets individuellement.

+0

Pensez-vous qu'il est possible de définir la police/couleur des citations en utilisant cette méthode? –

0

Votre texte d'étiquette va-t-il de manière prévisible entraîner une troncature (et donc toujours l'ellipse)? J'en doute, mais dans ce cas, vous savez que le contenu va essentiellement remplir la largeur, de sorte que vous pouvez faire les guillemets autres UILabels (ou même des images). Cela vous donnerait également le contrôle des polices et des couleurs.

1

Utilisez deux UILable s, le premier contient le texte (plus un guillemet ouvert), et le second tient juste un gros devis:

["text that is lon…]["]
+0

Oui, ne compliquez pas les choses si vous n'avez pas à le faire.Envelopper dans une classe séparée, comme QuotedLabel , donc vous ne polluez pas votre code avec des UILabels supplémentaires, et vous avez terminé. –

0

Il y a une bonne façon de le faire, mais il ne sera pas la chose la plus simple. Vous devez effectuer les opérations suivantes:

Déterminez la hauteur maximale et la largeur maximale de votre étiquette, entre guillemets. Déterminer la taille réelle de l'étiquette. Vous pouvez utiliser sizeWithFont: constrainedToSize: lineBreakMode: pour ce faire. Si le premier est plus petit que le second, supprimez le dernier mot de votre texte, ajoutez des points de suspension et réessayez. Cela ressemble à quelque chose comme:

NSString *nextLine = rawTextWithoutQuotes; 
NSRange range = [nextLine rangeOfString: @" " options: NSBackwardsSearch]; 
if (range.location == NSNotFound) { 
    return nextLine; 
} else { 
    nextLine = [nextLine substringToIndex: range.location]; 
} 

Continuez jusqu'à ce que vous avez tronqué manuellement votre chaîne, puis ajoutez les guillemets et les points de suspension, le mettre dans votre étiquette, et vous avez terminé.

Questions connexes