根据预先计算的上升计算UIFont大小

时间:2011-06-19 17:59:19

标签: iphone ios fonts uikit uifont

我正在为我的iOS应用程序使用自定义字体。我的视图需要根据视图的大小为字体选择不同的磅值。如果我有预定的

CGFloat ascender;

我基本上想确定这个

CGFloat calculatedFontSize = [self fontSizeForAscender:ascender];
[UIFont fontWithName:@"DINEngschriftStd" size:calculatedFontSize];

实现这一目标的最佳方式是什么?

2 个答案:

答案 0 :(得分:2)

试试这个。 [aString sizeWithFont:font minFontSize:minSize actualFontSize:&theSizeToUse forWidth:ViewWidth lineBreakMode:UILineBreakModeWordWrap];

theSizeToUse只是一个未初始化的CGFloat(即CGFloat theSizeToUse;)。你应该将它的地址传递给方法,并且在返回时它将包含你应该使用的字体大小。

答案 1 :(得分:1)

没有特别明显的方法可以这样做。您可以迭代地更改字体大小,直到找到一个具有正确上升的字体,但它有点乱(幸运的是,没有那么多浮点数,所以你可以在31次间隔二分试验中合理准确地完成它。)

另一方面,如果您假设上升器与字体大小成线性比例,您可以这样做:

UIFont * f = [UIFont fontWithName:... size:1];
f = [f fontWithSize:ascender/f.ascender];