问题
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