首页 > 移动平台 > 详细

iOS 计算字符串显示宽高度

时间:2017-02-20 13:00:41      阅读:394      评论:0      收藏:0      [点我收藏+]

 

ObjC(Category of NSString):

- (CGSize)getSizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size{
    CGSize resultSize = CGSizeZero;
    if (self.length <= 0) {
        return resultSize;
    }
    NSMutableParagraphStyle *style = [NSMutableParagraphStyle new];
    style.lineBreakMode = NSLineBreakByWordWrapping;
    resultSize = [self boundingRectWithSize:CGSizeMake(floor(size.width), floor(size.height))//用相对小的 width 去计算 height / 小 heigth 算 width
                                    options:(NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin)
                                 attributes:@{NSFontAttributeName: font,
                                              NSParagraphStyleAttributeName: style}
                                    context:nil].size;
    resultSize = CGSizeMake(floor(resultSize.width + 1), floor(resultSize.height + 1));//上面用的小 width(height) 来计算了,这里要 +1
    return resultSize;
}

 

 

Swift(Extension of NSString):

    func getSizeWithFont(_ font:UIFont,constrainedToSize size:CGSize) -> CGSize{
        
        if self.length == 0 { return CGSize.zero }
        
        let style = NSMutableParagraphStyle.init()
        style.lineBreakMode = .byWordWrapping
        
        let options = NSStringDrawingOptions.usesFontLeading.union(.usesLineFragmentOrigin)
        let attributes = [NSFontAttributeName:font,NSParagraphStyleAttributeName:style]
        let bound = CGSize.init(width: floor(size.width), height: floor(size.height))
        
        let rect = self.boundingRect(with: bound, options: options, attributes: attributes, context: nil)
        let _size = CGSize.init(width: floor(rect.width + 1), height: floor(rect.height + 1))
        
        return _size
    }

  

 

iOS 计算字符串显示宽高度

原文:http://www.cnblogs.com/ficow/p/6418890.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!