How to find out width of truncated UILabel text

北战南征 提交于 2019-12-04 09:31:10

问题


I have UILabel, which contains dynamic text. Sometimes text is too long to be shown and thus automagically truncated. How do I find out width of the visible part of truncated text?

sizeThatFits returns length of untruncated text, so at the moment I can only detect when truncation will be done. Need to know how much is visible, including those three dots. Any tips?

Clarification: when text is truncated, it's usually shorter than UILabel width.


回答1:


Robot K is correct.

If I was you I'd do the following:

  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];

This should give you a value less than 200 (taking into account the constrained max size and truncation method).




回答2:


I don't understand why the width would be different that the width of the UILabel if the text is being truncated. Regardless, you can use sizeWithFont:constrainedToSize: to calculate the size of a string with a given font but limited to a "constraining size".



来源:https://stackoverflow.com/questions/3903772/how-to-find-out-width-of-truncated-uilabel-text

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!