拟合格式化字符串的大多数需求需要计算给定字符串的最大宽度的容器的高度。可可API中的这种功能反映了这一点。字符串容器大小,计算给定最大高度的最小宽度
NSTextField.sizeThatFits()
此方法将采用固定的最大宽度并调整高度以包含文本。
你会如何做与上述相反的 - 给定的高度限制,计算最小的宽度以包含文本?
我首先想到的一种方法是首先通过将单行文本的面积除以所需的高度以获得估计的宽度来创建估计。但是这样做总是高估了高度,因为单词会缠绕,并且会沿着另一个单词推动其他单词。算法的下一个阶段将这个多余的高度添加到虚构的矩形的末端,直到最大高度限制被打破,给出宽度的上限和下限估计值。算法的最后部分收敛于一种二进制搜索,直到达到某个像素容差。我会尽可能地发布这个答案。
我觉得必须有更好的方法来做到这一点? (ObjC或Swift)
这是一个开始,但将是准确的,由于自动换行一定不再做一些线,我也查了一下高度单一长度的弦线不能准确地分成高度限制,因为多条线条由于其间的间距而具有较高的高度。尽管谢谢你的回答! – 2015-02-11 09:18:56