如何动态计算UILabel在被截断之前保留的字符数?

时间:2016-02-25 03:46:28

标签: ios objective-c swift uilabel

我有UILabel配置了动态参数:

textLabel.font = UIFont.systemFontOfSize(some_dynamic_size, weight: some_dynamic_font_weight)
textLabel.numberofLines = some_dynamic_number_lines
textLabel.frame = CGRectMake(0, 0, dynamic_width, dynamic_height)

如何计算UILabel在被截断之前可以容纳的字符数?

2 个答案:

答案 0 :(得分:0)

计算标签想要的高度,以获得其字体,文字和宽度。如果这比你想要的高,那么文本都不合适。

答案 1 :(得分:0)

问题在于,您的标签将能够适应您使用的字体上给出的更多或更少的文本以及它所设置的大小。如果您将其设置为标准尺寸,例如12pt的旧金山,那么您仍然可以使用不同数量的字母,因为并非所有字母都是相同的宽度,例如'WWW'比'lll'更大但是你可以通过取平均字母宽度来确定“最佳估计”。然后将标签的大小除以那么你可以大致知道有多少字母可以适合,但你还需要考虑插入的'...'。

但我建议不要连接,只是让文本变成可变大小,这样它就可以收缩并显示整个单词。我建议调查'动态文本',但我不知道你的应用程序是什么,所以这可能不是最好的建议。希望有所帮助