您的位置:首页 > 产品设计 > UI/UE

得到UILable在设置字体样式后的真实长度

2015-07-08 17:35 393 查看
在用代码创建UI时,首先就是要创建UI的frame,一般的控件在创建时都会调用如下函数:initWithFrame:(CGRect)frame.在取frame的时候有几种情况,一是你已知当前控件在父视图中的绝对位置,你可以直接输入坐标位置及大小就可以创建了。还有一种就是在已知控件的基础上做参考,来计算自己的坐标位置。我在工作中就遇到了一个这样问题:我有一个cell,cell上显示了标题(标题是显示是用的UILabel),我想根据需求在标题后添加一个标识图片。这个图片的位置不确定就需要我们计算出来。我使用的就是第二种方法,以已知的标题坐标来得到标识图片的坐标。得到标题的坐标很简单,可以用cell.titleLabel.frame来得到标题的坐标位置。那么要在标题后显示标识图片,还需要知道titleLabel的宽度。这样titleLabel 的初始坐标+titleLabel的宽度,就是在titleLabel的尾部坐标,在这个位置就是标识图片的坐标了。现在的问题是如何取titleLabel的宽度呢?由于我们可以对UILabel设置字体大小加粗等行为,使得UILabel的宽度并非是文字的长度。这就需要我们另想办法。还好,ios 已经我们想到了这点,我们可以调用一个函数来得到UILabel在设置字体大小加粗后的真实宽度:

CGSize labelSize=[cell.titleLabel.text sizeWithFont:cell.titleLabel.font

constraninedToSize:CGSizeMake(FLT_MAX,FLT_MAX)

lineBreakMode:UILineBreakModeWordWrap];

这样labelSize.width就是这个titleLable的真实宽度,在得到这个宽度后我们就可以计算出标识图片的位置。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: