在UILabel的单词中添加连字符

如何设置一个UILabel lineBreakMode打破单词并添加连字符到破碎的单词?

一个破碎的wo-

rd应该看起来像这样

在这里详细介绍Matt的答案: https ://stackoverflow.com/a/16502598/196358它可以使用NSAttributedString和NSParagraphStyle完成。 见下文:

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; paragraphStyle.hyphenationFactor = 1.0f; NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:titleString attributes:@{ NSParagraphStyleAttributeName : paragraphStyle }]; self.titleLabel.attributedText = attributedString; 

这将导致标签在逻辑上使用连字符中断。 它看起来不错,做起来相当简单。 它需要iOS 6.0,但我只在7.0下试过。

Swift 4.0

 let paragraphStyle = NSMutableParagraphStyle() paragraphStyle.hyphenationFactor = 1.0 let hyphenAttribute = [ NSAttributedStringKey.paragraphStyle : paragraphStyle, ] as [NSAttributedStringKey : Any] let attributedString = NSMutableAttributedString(string: "Your String", attributes: hyphenAttribute) self.yourLabel.attributedText = attributedString 

Swift 3.0

 let paragraphStyle = NSMutableParagraphStyle() paragraphStyle.hyphenationFactor = 1.0 let attributedString = NSMutableAttributedString(string: “Your String”, attributes: [NSParagraphStyleAttributeName:paragraphStyle]) self.yourLabel.attributedText = attributedString 

从故事板

在这里输入图像说明

有时添加一个locale属性键是非常重要的。

 NSString *lorem = @"Lorem ipsum <et cetera>."; NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init]; paragraph.hyphenationFactor = 1; paragraph.alignment = NSTextAlignmentJustified; paragraph.lineBreakMode = NSLineBreakByWordWrapping; self.label.attributedText = [[NSAttributedString alloc] initWithString:lorem attributes:@{ NSFontAttributeName: [UIFont preferredFontForTextStyle:UIFontTextStyleBody], NSForegroundColorAttributeName: [UIColor darkGrayColor], NSParagraphStyleAttributeName: paragraph, @"locale": @"la", // Latin, use @"en-US" for American English, for example. }]; 

我无法删除,因为它被接受,但我今天的POV是错误的。

EARLIER UILabel没有提供Hyphenation。
它今天通过NSAttributedString(ios6 +)

请参阅: IOS 6.x中的正交连字

这将帮助你。 请将Uilabel文本更改为归因 在这里输入图像说明

Interesting Posts