根据文本计算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;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ## 可重入函数 ### 可重入性的理解 若一个程序或子程序可以安全的被并行执行,则称其为可重入的;即当该子程序正...
    夏至亦韵阅读 749评论 0 0
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,717评论 9 468
  • 初遇少年看你星光熠熠爱意倾覆风吹四季想你俊容低音盈盈美目此去经年愿你笑若灿阳眉眼如初岁月沉浮为你披荆斩棘义无反顾年...
    沉溺于人海阅读 246评论 1 5
  • 文来自微信公众号拆书帮(ID:chaishubang) 之前写过一篇关于“跑题”的简书文章《“书读百遍其义自见”,...
    拆书帮阅读 431评论 0 2
  • 醉酒的夜把城市藏进画纸 , 凌乱的霓虹排队讴歌 , 流浪的风 , 在谁的脚下悸动成诗 ?
    叫水阅读 155评论 0 2