有几个UIKit类都包括size-to-fit选项。 但是,没有通用的字符串绘制任务的等效功能。您可以找到一个字符串,将字符串“拟合”绘制到目的地。 以矩形为例。 如果字体足够小,几乎任何文本都将“拟合”成矩形。 不幸的是,这导致了非常小的单行文本。 挑战是找到最大的字体来换行以匹配目标,所以绘制的文本的轮廓尺寸对应于该矩形的轮廓尺寸。 图8-30显示不同长度的文本串。 每个绘图都拟合其目的地,通过调整字体的大小,同时测试以拟合轮廓的尺寸。
图8-30字体拟合。
清单8-4详细介绍了图8-30中用来创建输出的算法。 这不是一个精确的系统,因为我通过tolerance
参数添加了一些灵活性。 因此,这种实现有时可能会略微超出目的地。所以,请考虑使用比实际使用的稍微小一点的目的地调用该函数。
该函数迭代地选择一个字体。 它测试其输出大小,并且当输出的轮廓尺寸接近目标矩形的轮廓尺寸时,算法停止并返回最近成功(拟合)的字体。
与本章中的所有其他材料一样,清单8-4已更新为使用iOS 7调用。 检索文本边界框的新方法无法部署到iOS 7以前的系统。
清单8-4选择拟合字体
1 | UIFont *FontForWrappedString( |
本文翻译自《iOS Drawing Practical UIKit Solutions》作者:Erica Sadun,翻译:Cheng Dong。如果觉得本书不错请购买支持正版:亚马逊购买传送门,本书所有源代码可在GitHub上下载。译者虽然力求做到信,达,雅,但是由于时间仓促加之译者水平十分有限,文中难免会出现不正确,不准确,词不达意,难于理解的地方,还望各位批评指正,共同进步,谢谢。转载请注明出处。