如何找出截断的UILabel文本的宽度

如何找出截断的UILabel文本的宽度

问题描述:

我有UILabel,其中包含动态文本。有时文字太长而无法显示,因此自动截断。如何找出截断文本的可见部分的宽度?如何找出截断的UILabel文本的宽度

sizeThatFits返回未截断文本的长度,所以目前我只能检测到截断时间。需要知道多少可见,包括这三个点。有小费吗?

说明:当文本被截断时,它通常比UILabel宽度短。

机器人K是正确的。

如果我是你,我会做到以下几点:

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 24)]; 
    label.text = @"this is some really long text that i want in a small label"; 
    [view addSubview:label]; 

    CGSize size = [label.text sizeWithFont:label.font constrainedToSize:label.frame.size 
       lineBreakMode:label.lineBreakMode]; 

这应该给你一个值小于200(考虑到受限的最大尺寸和截断法)。

+0

机器人K适合多行的情况,但我的问题是单行。你是提到lineBreakMode的人,此外它也是一个通用的解决方案。感谢名单! – JOM 2010-10-11 09:27:49

我不明白为什么宽度会不同,UILabel的宽度,如果文本被截断。无论如何,您可以使用sizeWithFont:constrainedToSize:来计算具有给定字体但限于“约束大小”的字符串的大小。

+1

因为截短文本的宽度可能更小!不会问,如果它与UILabel宽度相同。字体大小固定为15,但会检查sizeWithFont是否会给sizeThatFits以外的东西。 – JOM 2010-10-11 06:20:01

+1

UILabel宽度205,单排。 sizeThatFits是291,sizeWithFont:constrainedToSize是163,sizeWithFont:constrainedToSize:lineBreakMode是203,sizeWithFont:forWidth:lineBreakMode是203. Thanx用于指出“163”和“203”解决方案之间的区别! – JOM 2010-10-11 09:30:40