关闭

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

190人阅读 评论(0) 收藏 举报
分类:
在用代码创建UI时,首先就是要创建UIframe,一般的控件在创建时都会调用如下函数:initWithFrame:(CGRect)frame.在取frame的时候有几种情况,一是你已知当前控件在父视图中的绝对位置,你可以直接输入坐标位置及大小就可以创建了。还有一种就是在已知控件的基础上做参考,来计算自己的坐标位置。我在工作中就遇到了一个这样问题:我有一个cellcell上显示了标题(标题是显示是用的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的真实宽度,在得到这个宽度后我们就可以计算出标识图片的位置。
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:347052次
    • 积分:5568
    • 等级:
    • 排名:第4991名
    • 原创:95篇
    • 转载:819篇
    • 译文:4篇
    • 评论:19条
    最新评论