博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 计算字符串显示宽高度
阅读量:4920 次
发布时间:2019-06-11

本文共 1746 字,大约阅读时间需要 5 分钟。

 

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    }

  

 

转载于:https://www.cnblogs.com/ficow/p/6418890.html

你可能感兴趣的文章
多线程——死锁
查看>>
清楚float浮动的四种方法
查看>>
解决Your content must have a ListView whose id attribute is 'android.R.id.list'
查看>>
bzoj5192: [Usaco2018 Feb]New Barns
查看>>
结对-航空购票系统-结对项目总结
查看>>
GitHub创建项目,保存代码。
查看>>
sed 小结
查看>>
LeetCode #3 Longest Substring Without Repeating Characters (M)
查看>>
Python 乱码问题解决办法
查看>>
单例模式易错分析
查看>>
【BZOJ4827】【HNOI2017】礼物
查看>>
Struts2
查看>>
编写高质量代码改善C#程序的157个建议——建议63:避免“吃掉”异常
查看>>
MySQL性能调优与架构设计——第9章 MySQL数据库Schema设计的性能优化
查看>>
python 操作 excel
查看>>
XML解析之DOM ,SAX解析区别
查看>>
如何把一篇Word文档里的所有换行符去掉?
查看>>
改造vim
查看>>
C++编写Node.js插件(Addon)
查看>>
Excel-漏斗图分析(差异分析)
查看>>