指定したSize範囲内で指定した文字を完全に表示する最大フォントの補助関数を取得します.


指定したSize範囲内で指定した文字を完全に表示する最大フォントの補助関数を取得します.
関数の定義は次のとおりです.
           
-(int) getFontSizeForString:(std::string)strText maxFontSize:(int)maxfontsize forSize:(CGSize)size;

パラメータstrTextは表示するテキストの内容で、maxfontsizeは最初に欲しいフォント番号を指定します.sizeは、テキストを表示する領域範囲です.最も適切なフォント番号を返します.maxfontsize記号が指定したsize範囲内でこれらの指定した文字を完全に表示できない場合、補助関数は、すべての文字を表示できるフォントが見つかるまで、これより小さいサイズのフォントをテストします.
補助関数のデフォルトフォントはHelveticaフォントで、実は改善することができて、フォントも1つのパラメータとして指定して、修正しないで、動くのがおっくうです.
関数は次のように実装されます.
       
-(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;
}