Swift 3.0 计算UILabel/UIButton的Title字符串长度

因项目需要,所以研究了下,根据之前的OC代码是没有办法原样转换的,因为Swift中已经没有boundingRectWithSize这个方法了。所以需要使用其他的方法,也能达到一样的效果。

先来一个OC文件代码

.h文件

+ (CGSize)sizeWithText:(NSString *)text font:(UIFont *)font;

+ (CGSize)sizeWithText:(NSString *)text font:(UIFont *)font maxWidth:(CGFloat)maxWidth;

.m文件

+ (CGSize)sizeWithText:(NSString *)text font:(UIFont *)font {
    return [self sizeWithText:text font:font maxWidth:MAXFLOAT];
}

+ (CGSize)sizeWithText:(NSString *)text font:(UIFont *)font maxWidth:(CGFloat)maxWidth {
    NSMutableDictionary *dict = [NSMutableDictionary dictionary];
    dict[NSFontAttributeName] = font;
    CGSize size = CGSizeMake(maxWidth, MAXFLOAT);
    return [text boundingRectWithSize:size options:NSStringDrawingTruncatesLastVisibleLine  | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:dict context:nil].size;
}

本文重点:Swift代码,其实也就几行而已

Swift代码

/**
* 计算字符串长度
*/
static func sizeWithText(text: NSString, font: UIFont, size: CGSize) -> CGRect {
    let attributes = [NSFontAttributeName: font]
    let option = NSStringDrawingOptions.usesLineFragmentOrigin
    let rect:CGRect = text.boundingRect(with: size, options: option, attributes: attributes, context: nil)
    return rect;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 15,433评论 4 61
  • 早上继续瘦了一斤,开心^_^果然是生理期后的几天是减肥最佳时期。 昨天中午本来要求吃肉,但是没来得及准备,就吃了两...
    望飞雪阅读 223评论 4 0
  • 本周小结 本周实验室的状态呢周一:解决重构项目的mapping方面的细节问题。完成了软著代码文档的初版整理,已经到...
    im天行阅读 243评论 0 0
  • 自己一个人, 对着空气, 在自语自言。 也罢, 反正这世间, 人情冷暖, 茶热茶凉, 独有自己叹!
    白色小猪阅读 166评论 0 0
  • 点开朋友圈,空间,微博……不出所料的刷了屏的祝愿妈妈的帖子。唯一不同的是,更有针对性了,祝愿的是“所有的妈妈”...
    米斯特6461阅读 277评论 0 0

友情链接更多精彩内容