iOSはlabelまたはbuttonのtitlelabelテキストの幅を取得します.

1237 ワード

以下の方法をUIButtonのカテゴリに追加し、CGSizeでsizeを取得した後、buttonまたはlabelのframeを再設定すればよい.
/* 
    txt:label button title  
    font:  
    size: size 
 */  

-(CGSize) boundingRectWithSize:(NSString*) txt Font:(UIFont*) font Size:(CGSize) size{  

    CGSize _size;  


#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_6_1  

    NSDictionary *attribute = @{NSFontAttributeName: font};  

    NSStringDrawingOptions options = NSStringDrawingTruncatesLastVisibleLine |  

    NSStringDrawingUsesLineFragmentOrigin |  

    NSStringDrawingUsesFontLeading;  

    _size = [txt boundingRectWithSize:size options: options attributes:attribute context:nil].size;  

#else  

    _size = [txt sizeWithFont:font constrainedToSize:size];  

#endif  

    return _size;  

}