- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我认为当您有一组不想要换行的单词时,这是一个常见问题。
有时这些词之间的字符是空格或连字符等。在我的例子中是一个点:)
这是我的文本 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 是否提供了一些东西来将一组单词定义为不可破坏的?或者有没有更简单的方法来处理一组通用的单词?
最佳答案
不,NSAttributedString
没有任何防止在一个范围内换行的每个字符的属性。您可以在 NSParagraphStyle
中将 NSLineBreakMode
设置为 ByClipping
或其他非环绕模式,但这适用于段落中的所有文本。 (段落以换行符分隔。)
为了防止在比整个段落更小的范围内换行,需要插入一个U+2060 WORD JOINER在可能发生不需要的中断的任何两个字符之间。在您的示例中,这意味着在斜杠字符的每一侧。
关于ios - 防止在 NSAttributedString 中换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35489781/
在 Vaadin 7.0,显示时JavaBean Table 中的数据与 BeanContainer ,用新数据刷新表的正确方法是什么? 最佳答案 该表通过监听器监视表项的属性。如果您通过表的 Ite
首先,我使用的是带有 Axis2 1.6.2 的 eclipse,我正在 tomcat 6 上部署我创建的 Web 服务。Web 服务是在 eclipse 中通过自上而下的方法创建的。 我被要求使对我
我已将 Rails 3.1.1 应用程序升级到 Rails 3.1.3,现在,对于每个请求,它仅响应错误数量的参数(3 for 1)。不幸的是,它没有说明错误在哪里,并且应用程序跟踪为空。我认为存在一
我是一名优秀的程序员,十分优秀!