得到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的真实宽度,在得到这个宽度后我们就可以计算出标识图片的位置。
CGSize labelSize=[cell.titleLabel.text sizeWithFont:cell.titleLabel.font
constraninedToSize:CGSizeMake(FLT_MAX,FLT_MAX)
lineBreakMode:UILineBreakModeWordWrap];
这样labelSize.width就是这个titleLable的真实宽度,在得到这个宽度后我们就可以计算出标识图片的位置。
相关文章推荐
- IOS疯狂基础之UILabel
- 使用Android-BluetoothSPPLibrary自动连接蓝牙设备
- UITextView 居中变为居上
- UITableView 自带编辑删除 自定义按钮
- request.META里包含了哪些数据?
- 获取UUID两种方法,并让UUID唯一的方法
- Android之Handler、MessageQueue、Message、Messager与Looper关系
- 学习easyui疑问(三)
- UIButton 转化为 UIBarButtonItem
- PHP中include require include_once require_once 的区别
- Fuel 30 分钟快速安装OpenStack
- Goagent Install Guide
- UE的相关操作
- phoenixframe自动化测试平台webUI用例实例
- iOS UIButton在某些情况下不能立刻响应TouchDown事件
- UVA 1324 The Largest Clique 最大团(强连通分量,变形)
- Java String StringBuilder 和 StringBuffer 用法详解
- The way it is connected with wristwatches connected with almost any bunch of Diesel-engined is unique
- 语句include和require的区别是什么?为避免多次包含同意文件,可用?语句来代替他们?
- Android中UI线程与后台线程交互设计方法