您的位置:首页 > 其它

获得在指定Size范围内完全显示指定文字的最大字体的辅助函数

2012-03-03 19:49 417 查看
                                                     
获得在指定Size范围内完全显示指定文字的最大字体的辅助函数

        函数定义如下:

           -(int) getFontSizeForString:(std::string)strText maxFontSize:(int)maxfontsize forSize:(CGSize)size;
           参数 strText是要显示的文本内容,maxfontsize是指定一个最初的想要的字体字号。size是需要显示文本的区域范围。返回值为最合适的字体号。如果maxfontsize字号在指定的size范围内不能完全显示这些指定的文字,辅助函数就会测试比这个更小一号的字体,直到找到能够显示所有文字的字体为止。

          辅助函数默认字体为Helvetica字体,其实可以改进下,将字体也做为一个参数来指定,就不修改了,懒得动了。

       函数实现如下:
       -(int) getFontSizeForString:(std::string)strText maxFontSize:(int)maxfontsize forSize:(CGSize)size
{
int fontSize=maxfontsize;

bool bContinue=true;

while (bContinue && fontSize>0)
{
CGSize showTipsSize;
UIFont *newfont= [UIFont fontWithName:@"Helvetica" size:fontSize];

NSString * nsText=[NSString stringWithCString:strText.c_str() encoding:NSUTF8StringEncoding];

CGSize originSize;
originSize.height=size.height;
originSize.width=10000;

showTipsSize = [nsText sizeWithFont:newfont constrainedToSize:originSize lineBreakMode: UILineBreakModeWordWrap];

if (showTipsSize.width+5<=size.width)
{
bContinue=false;
}
else
{
fontSize=fontSize-1;
}
}

return fontSize;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  string encoding 测试