Я думаю, что это обычная проблема, когда у вас есть набор слов, в которых вы не хотите линии прерывания.Предотвращение разрыва строки в NSAttributedString
Иногда характер между этими словами является пробел или дефис, и т.д. В моем случае это точка :)
Это мой текст 50,0/80,0
В конце концов, я сделал это используя размер этикетки и измерения, сколько места мне нужно для этой строки, в частности:
UIFont *fontAwardNumber = [UIFont fontWithName:@"DIN-Bold" size:20];
NSStringDrawingContext *context = [[NSStringDrawingContext alloc] init];
CGSize labelSize = (CGSize){customCell.awardValueLabel.bounds.size.width, FLT_MAX};
CGRect rectNeededForAwardNumber = [awardNumber boundingRectWithSize:labelSize options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName: fontAwardNumber} context:context];
if (rectNeededForAwardNumber.size.height > customCell.awardValueLabel.bounds.size.height) {
//We need to add a breakline
NSRange range = [awardNumber rangeOfString:@"/"];
if (range.location != NSNotFound) {
awardNumber = [awardNumber stringByReplacingCharactersInRange:range withString:@"/\n"];
}
}
я нашел другие решения, как заменить ваше пространство или дефис для неразрывных символов:
Preventing line breaks in part of an NSAttributedString
Но мой вопрос более общий характер, делает NSAttributedString обеспечить то, чтобы определить набор слов, как не ломкий? Или есть ли более простой способ сделать это для общего набора слов?
Используйте 'NSParagraphStyle', установив режим прерывания строки на' ByWordWrapping', см. Этот ответ ... http://stackoverflow.com/a/19197903/499581 –
Разрывы строк используют \, а не '/'. Ты знаешь, что это правильно? – LinusGeffarth