我认为当您有一组不需要换行符的单词时,这是一个常见问题。
有时这些单词之间的字符是空格或连字符等。在我的例子中,这是一个点:)
这是我的文字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"];
}
}
我找到了其他解决方案,例如将空格或连字符替换为牢不可破的字符:
防止 NSAttributedString 部分换行 https://stackoverflow.com/questions/25393231/preventing-line-breaks-in-part-of-an-nsattributedstring
但我的问题更笼统, NSAttributedString 是否提供了一些东西来将一组单词定义为不可破坏的?或者有没有更简单的方法来处理一组通用的单词?
No, NSAttributedString
没有任何防止在范围内换行的每字符属性。您可以设置NSLineBreakMode
to ByClipping
或其他非包装模式NSParagraphStyle
,但这适用于该段落中的所有文本。 (段落之间用换行符分隔。)
为了防止在比整个段落更小的范围内换行,您需要插入一个U+2060 字连接器 http://unicode.org/reports/tr14/#WJ任何两个字符之间可能会出现不必要的中断。在您的示例中,这意味着斜杠字符的每一侧。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)