UILabel sizeThatFits returns non-truncated width for single-line label

Originator:sethfri
Number:rdar://FB7482776 Date Originated:12/6/19
Status:Open Resolved:No
Product:iOS & iPad OS > UIKit Product Version:
Classification:Incorrect/Unexpected Behavior Reproducible:
 
1. Create a UILabel with the default values (`lineBreakBehavior` is still `.byTruncatingTail`, `numberOfLines` is still `1`) and some very long text, like `"Very Very Very Very Very Very Very Very Very Very Text"`.
2. Call `sizeThatFits` on the label with a width of 250 and a height of 100

Expected Behavior: The size that fits should have a width of 250 or less because the label should know to truncate the text since it's too long.

Actual Behavior: The size that is returned is over 400, well over the size that was passed in to `sizeThatFits`

I have attached a playground that demonstrates this. In the playground, you'll see that if you set `numberOfLines` to `2` and set content that extends past 2 lines of content, everything works correctly. It is only for `numberOfLines` set to `1` that truncation is broken.

Xcode Version: 11.2.1

Comments


Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!