例如,如果UILabel
的文字是:"Questions that may already have your answer"
,我希望它能够打印出来
"Questions that may alr"
。我不想剪辑最后一个字符,而是剪切文本。
我不能使用字符限制,因为大多数字体都不是等宽字体。我不能使用剪辑,因为它可能会在另一点剪切文本,或者它可能会从任何位置剪切最后一个字母“r”。
我想要的行为与NSLineBreakByCharWrapping
numberOfLines = 0
相似。
所以,我希望它丢弃(换行)那个不合适的最后一个字符,但是我想让它掉落/换行到一个隐藏空间=我不想要第二行。
这怎么可能?
答案 0 :(得分:1)
要获得所需的输出,您需要知道标签的宽度,可以通过以下方法知道:
CGSize size = [string sizeWithAttributes:
@{NSFontAttributeName:
[UIFont systemFontOfSize:17.0f]}]; // iOS 7 and later
CGSize size = [string sizeWithFont: [UIFont systemFontOfSize:17.0f]]; // prior to iOS 7
将lineBreakMode属性设置为NSLineBreakByCharWrapping;
UILabel *yourLbl = [[UILabel alloc] initWithFrame:CGRectMake(50, 50, size.width, 50)];
placeLbl.numberOfLines = 1;
placeLbl.lineBreakMode = NSLineBreakByCharWrapping;
答案 1 :(得分:1)
In swift 3.0
labelObject.numberOfLines = 0;
labelObject.lineBreakMode = NSLineBreakMode.byCharWrapping