【问题标题】:Calculating UIFont size based on pre calculated ascender根据预先计算的上升器计算 UIFont 大小
【发布时间】:2011-09-18 06:00:03
【问题描述】:
我正在为我的 iOS 应用程序使用自定义字体。我的视图需要根据视图的大小为字体选择不同的磅值。如果我有一个预定的
CGFloat ascender;
我基本上想确定这一点
CGFloat calculatedFontSize = [self fontSizeForAscender:ascender];
[UIFont fontWithName:@"DINEngschriftStd" size:calculatedFontSize];
最好的方法是什么?
【问题讨论】:
标签:
iphone
ios
fonts
uikit
uifont
【解决方案1】:
试试这个。 [aString sizeWithFont:font minFontSize:minSize actualFontSize:&theSizeToUse forWidth:ViewWidth lineBreakMode:UILineBreakModeWordWrap];
theSizeToUse 只是一个未初始化的 CGFloat(即CGFloat theSizeToUse;)。您应该将它的地址传递给该方法,并在返回时包含您应该使用的字体大小。
【解决方案2】:
没有特别明显的方法可以做到这一点。您可以反复更改字体大小,直到找到具有正确升序的字体,但这有点混乱(幸运的是,没有那么多浮点数,因此您可以在 31 次区间二等分试验中合理准确地做到这一点)。
另一方面,如果您假设升序随字体大小线性缩放,您可以这样做:
UIFont * f = [UIFont fontWithName:... size:1];
f = [f fontWithSize:ascender/f.ascender];