我在IB中将numberOfLines设置为1,但是当我将文本设置为长字符串时,它不会截断。如果我将numberOfLines设置为2,则截断运行正常。应该如何将一个长字符串截断为单行?UILabel截断文本不起作用
回答
也许这种方法可以帮助你:
[myLabel sizeToFit]
该标签不会被截断,但会调整标签大小以适合一行。
简单,设置以下属性:
label.adjustsFontSizeToFitWidth = NO;
label.lineBreakMode = NSLineBreakByTruncatingTail;
如果设置在IB标签的自动收缩到“固定字体大小”,你总是会得到一个truncatation当字符串宽度超过标签宽度。我猜你碰巧把它设置为“最小字体比例”或“最小字体字体”,这会在字符串太长时导致调整大小。
(Xcode的4.5,Xcode和IB的其他版本可能是不同的属性名)
它仍然无法正常截断文本(使用字符换行/换行)。它只是切断了文字的图形。除非使用多行,否则会将第一行的位置更改为无法看到的位置。 – CommaToast
我做两个功能,这将帮助你做你的工作。
基础: 该解决方案为我做任务:
“最小化字体的字体我最小大小,然后把尽可能多的信息,如可能的,但不是更大然后最大宽度”
takeFineFont ...功能参数:
(UIFont*)font
- 你的标签(titleLabel.font
)的字体
(NSString*)string
- 文本在标签(titleLabel.text
)
(CGSize)limitStringSize
- 极限尺寸。
limitStringSize.width
- 你的标签宽度的限制(上限)
limitStringSize.height
- 你的标签(下限)高度限制(实际上,字体的大小)
-(UIFont*)takeFineFontSize:(UIFont*)font
forText:(NSString*)string
andLimit:(CGSize)limitStringSize{
UIFont* resultFont = [UIFont fontWithName:[font fontName] size:[font pointSize]];
if(limitStringSize.width != 0 && limitStringSize.height != 0){
CGSize currentSize = [string sizeWithFont:resultFont];
while(/* change font width with upper bound */
currentSize.width > limitStringSize.width
&&
/* change font height with lower bound */
currentSize.height > limitStringSize.height){
/*change height and take new width*/
currentSize.height -= 1;
currentSize.width = [string sizeWithFont:[resultFont fontWithSize:currentSize.height]].width;
}
resultFont = [resultFont fontWithSize:currentSize.height];
}
return resultFont;
}
-(double)takeFineWidthForFont:(UIFont*)font
forString:(NSString*)string
andLimit:(double)widthLimit{
return MIN([string sizeWithFont:font].width, widthLimit);
}
假设,你已经在UILabel* titleLabel
大串 你定义的地方:
#define maximumLengthOfYourLabel 300
#define minimumSizeOfFont 14
你现在做什么呢?只是这样做和平的代码:
-(void)updateTitleLabelWithBigText:(NSString*)string{
/*change text*/
self.titleLabel.text = string;
/*take pretty small font*/
self.titleLabel.font = [self takeFineFontSize:self.titleLabel.font
forText:self.titleLabel.text
andLimit:CGSizeMake(maximumLengthOfYourLabel,minimumSizeOfFont)
];
/*if your text still big, take minimal width and trunctate it*/
self.titleLabel.width = [self takeFineWidthForFont:self.titleLabel.font
forString:self.titleLabel.text
andLimit:maximumLengthOfYourLabel];
self.titleLabel.lineBreakMode = NSLineBreakByTruncatingTail;
}
你可能有在该节即拍的东西就会失控的标签上的约束。
仔细检查您的约束条件,或者删除它们以找到该部分中的该标签或其他控件。
标签的故事板选项:“换行符:截尾”将用于您正在查找的工作。
这绝对是我的问题。就我而言,我只是删除了所有约束条件,并重新添加了我想要的。 – livingtech
如果使用自动布局,在我的情况下,缺少一个约束。如果UILabel的宽度/尾部没有设置约束,则它会增加其宽度。一旦它的宽度受到限制,例如其超视图,就会发生截断。
谢谢,振动。该解决方案为我工作。我将label.trailing设置为等于superview.trailing和NumberOFLines为1.标签被截断! –
- 1. UILabel被截断的文本
- 2. UILabel文本被截断
- 3. UILabel的文本截断
- 4. 动态UILabel截断文本
- 5. CSS截断不起作用
- 6. UILabel文本被截断为大字号
- 7. uilabel尾截断
- 8. UILabel截断
- 9. tvOS中“更多”按钮与文本截断不起作用
- 10. 截断文本,但不截断HTML
- 11. 截断函数不起作用
- 12. UILabel - 缩小文本而不是截断尾部
- 13. 归因文本在UICollectionViewCell中截断了UILabel,但在UITableViewCell中没有截断
- 14. 截断文本
- 15. 多行UILabel正在截断
- 16. UILabel在滚动后截断
- 17. UILabel字符串截断
- 18. UILabel中的NSAttributedString尾截断
- 19. UILabel截断“...”(空格+ ...)而不是“...”
- 20. 使用linq截断文本
- 21. UILabel用左边的省略号截断
- 22. NSAttributedString对UILabel不起作用
- 23. \ n在UILabel不起作用
- 24. 如何获得UILabel将截断文本的范围
- 25. 如何找出截断的UILabel文本的宽度
- 26. 我可以在UIWebview上有类似于UILabel截断文本吗?
- 27. 允许的UILabel截断文本,但单词边界
- 28. UILabel文本旋转时会截断。怎么修?
- 29. 在UILabel调整大小后强制文本截断
- 30. 计算截断UILabel的文本的一部分
什么,而不是发生了什么? – borrrden
@borrrden,在我的情况下,它只是剪辑的标签容器的边框文字,而没有显示小圆点 – igrek
终于解决了..这个问题是一个属性串...我有我的文字与它规定的问题,它使用自定义pagargaph样式。当我指定了段落的lineBreakMode时,问题就解决了。学分去https://stackoverflow.com/a/41945661/907692 – igrek