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

来源:互联网 发布:游戏本 知乎 编辑:程序博客网 时间:2024/06/05 08:16

                                                      获得在指定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;}

原创粉丝点击