根据文本计算size

.h文件

+ (CGSize)sizeForString:(NSString *)string
                   limitSize:(CGSize)sz
                          font:(UIFont *)ft
          lineBreakMode:(NSLineBreakMode)lineBreakMode
                 alignment:(NSTextAlignment)alignment;

.m 文件

+ (CGSize)sizeForString:(NSString *)string
          limitSize:(CGSize)sz
               font:(UIFont *)ft
      lineBreakMode:(NSLineBreakMode)lineBreakMode
          alignment:(NSTextAlignment)alignment {

CGSize  boundSize = CGSizeMake(sz.width, sz.height);
CGSize  resultSize      = CGSizeZero; 

if ([NSString instancesRespondToSelector:@selector(boundingRectWithSize:options:attributes:context:)]) {
    
    NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
    style.lineBreakMode = lineBreakMode;
    style.lineSpacing   = 0;
    style.alignment     = alignment;
    
    NSDictionary *attribute = @{NSFontAttributeName:ft,
                                NSParagraphStyleAttributeName:style};
    CGRect rect = [string boundingRectWithSize:boundSize
                                       options:NSStringDrawingUsesLineFragmentOrigin
                                    attributes:attribute
                                       context:nil];
    resultSize = CGSizeMake(ceil(rect.size.width), ceil(rect.size.height));
}else {
    resultSize = [string sizeWithFont:ft
              constrainedToSize:boundSize
                  lineBreakMode:lineBreakMode];
}

resultSize = CGSizeMake(MIN(sz.width,resultSize.width),
                  resultSize.height);
return resultSize;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ## 可重入函数 ### 可重入性的理解 若一个程序或子程序可以安全的被并行执行,则称其为可重入的;即当该子程序正...
    夏至亦韵阅读 4,101评论 0 0
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 100,279评论 9 468
  • 文来自微信公众号拆书帮(ID:chaishubang) 之前写过一篇关于“跑题”的简书文章《“书读百遍其义自见”,...
    拆书帮阅读 3,114评论 0 2
  • 醉酒的夜把城市藏进画纸 , 凌乱的霓虹排队讴歌 , 流浪的风 , 在谁的脚下悸动成诗 ?
    叫水阅读 1,265评论 0 2
  • 郭相麟 人在旅途 不知不觉周围一些评判 一些设限 捆绑了思想的灵性 麻木了自我内在的感受 束缚了个人自由的显现 动...
    郭相麟阅读 1,391评论 0 0

友情链接更多精彩内容