在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文本更改为归因