Добавьте дефисы в разрыв слова в UILabel
Как установить UILabel lineBreakMode, чтобы сломать слова и добавить дефисы к сломанным словам?
ярлык со сломанным wo -
rd должен выглядеть следующим образом:
Ответы
Ответ 1
Разрабатывая ответы Мэтта здесь: fooobar.com/questions/352689/..., это можно сделать с помощью 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.
Ответ 2
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
От раскадровки
![введите описание изображения здесь]()
Ответ 3
Иногда важно добавить ключ атрибута 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.
}];
Ответ 4
Я не могу удалить это, поскольку он был принят, но я ошибаюсь с сегодняшнего дня POV.
EARLIER UILabel не предлагал перенос.
СЕГОДНЯ это происходит через NSAttributedString (ios6 +)
см. Слово орфографической расстановки переносов в IOS 6.x
Ответ 5
Это поможет вам. измените Uilabel Text plain на Attributed
![введите описание изображения здесь]()