iOS开发小技巧:根据文本,字体,计算UILabel高度及宽度

2018 年 3 月 4 日 CocoaChina 陈满iOS

1. 需求:


根据字符串,字体,计算UILabel宽度

根据字符串,字体,宽度,计算UILabel高度


2. 解决:


新建一个分类Category,封装好相关计算方法

调用时,导入该分类,调用相关计算方法得出数值


3. 实现示例:


UILabel+Size分类,实现代码


  • UILabel+Size.h


//

//  UILabel+Size.h

//  xiaoanproduct

//

//  Created by ChenMan on 2018/1/25.

//  Copyright © 2018年. All rights reserved.

//


#import <UIKit/UIKit.h>


@interface UILabel (Size)


+ (CGFloat)getHeightByWidth:(CGFloat)width title:(NSString *)title font:(UIFont*)font;


+ (CGFloat)getWidthWithTitle:(NSString *)title font:(UIFont *)font;


@end


  • UILabel+Size.m


//

//  UILabel+Size.m

//  xiaoanproduct

//

//  Created by ChenMan on 2018/1/25.

//  Copyright © 2018年. All rights reserved.

//


#import "UILabel+Size.h"


@implementation UILabel (Size)


+ (CGFloat)getHeightByWidth:(CGFloat)width title:(NSString *)title font:(UIFont *)font

{

    

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, width, 0)];

    label.text = title;

    label.font = font;

    label.numberOfLines = 0;

    [label sizeToFit];

    CGFloat height = label.frame.size.height;

    return height;

}


+ (CGFloat)getWidthWithTitle:(NSString *)title font:(UIFont *)font {

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 1000, 0)];

    label.text = title;

    label.font = font;

    [label sizeToFit];

    return label.frame.size.width;

}


@end


4. 调用示例:


场景:在一个UITableViewCell中,重写Cell的一个模型属性的setter方法,需要先对UILabel对象的text属性赋值后,再进行更新布局约束操作。代码如下:


  • CMTestTableViewCell.m


- (void)setCellMdl:(SupplementCellModel *)cellMdl{

    if (cellMdl) {

        _cellMdl = cellMdl;

        self.titleLabel.text = cellMdl.titleStr;

        self.contextTextField.placeholder = cellMdl.holderStr;

        self.rightLbl.text = cellMdl.tailStr;

        CGFloat width = [UILabel getWidthWithTitle:self.rightLbl.text font:self.rightLbl.font];

        [self.rightLbl mas_updateConstraints:^(MASConstraintMaker *make) {

            make.width.mas_equalTo(width);

        }];

        self.kind = cellMdl.cellType;

    }

}


作者:陈满iOS

链接:https://www.jianshu.com/p/c26c168efe45


登录查看更多
0

相关内容

还在修改博士论文?这份《博士论文写作技巧》为你指南
【高能所】如何做好⼀份学术报告& 简单介绍LaTeX 的使用
专知会员服务
59+阅读 · 2020年3月19日
强化学习最新教程,17页pdf
专知会员服务
168+阅读 · 2019年10月11日
计算机视觉最佳实践、代码示例和相关文档
专知会员服务
17+阅读 · 2019年10月9日
C# 10分钟完成百度人脸识别
DotNet
3+阅读 · 2019年2月17日
开发、调试计算机视觉代码有哪些技巧?
AI研习社
3+阅读 · 2018年7月9日
实战 | 用Python做图像处理(三)
七月在线实验室
15+阅读 · 2018年5月29日
已删除
生物探索
3+阅读 · 2018年2月10日
用Python调用百度OCR接口实例
数据挖掘入门与实战
16+阅读 · 2018年1月29日
tensorflow LSTM + CTC实现端到端OCR
机器学习研究会
26+阅读 · 2017年11月16日
Arxiv
5+阅读 · 2019年8月22日
Arxiv
3+阅读 · 2018年6月1日
Arxiv
3+阅读 · 2018年3月13日
VIP会员
相关资讯
C# 10分钟完成百度人脸识别
DotNet
3+阅读 · 2019年2月17日
开发、调试计算机视觉代码有哪些技巧?
AI研习社
3+阅读 · 2018年7月9日
实战 | 用Python做图像处理(三)
七月在线实验室
15+阅读 · 2018年5月29日
已删除
生物探索
3+阅读 · 2018年2月10日
用Python调用百度OCR接口实例
数据挖掘入门与实战
16+阅读 · 2018年1月29日
tensorflow LSTM + CTC实现端到端OCR
机器学习研究会
26+阅读 · 2017年11月16日
Top
微信扫码咨询专知VIP会员