iPhone:constrainedToSize获取字符串的宽高

简介: iPhone:constrainedToSize获取字符串的宽高

在使用UILabel存放字符串时,经常需要获取label的长宽数据,本文列出了部分常用的计算方法。

1.获取宽度,获取字符串不折行单行显示时所需要的长度

CGSize titleSize = [aString sizeWithFont:font constrainedToSize:CGSizeMake(MAXFLOAT, 30)];
CGSize titleSize = [aString sizeWithFont:font 
                       constrainedToSize:CGSizeMake(MAXFLOAT, 30)]; 

注:如果想得到宽度的话,size的width应该设为MAXFLOAT。

 

2.获取高度,获取字符串在指定的size内(宽度超过label的宽度则换行)所需的实际高度.

CGSize titleSize = [aString sizeWithFont:font 
                       constrainedToSize:CGSizeMake(label.frame.size.width, MAXFLOAT) 
                           lineBreakMode:UILineBreakModeWordWrap]; 

注:如果想得到高度的话,size的height应该设为MAXFLOAT。

 

3.实际编程时,有时需要计算一段文字最后一个字符的位置,并在其后添加图片或其他控件(如info图标),下面代码为计算label中最后一个字符后面一位的位置的方法。

CGSize sz = [label.text sizeWithFont:label.font                      
                   constrainedToSize:CGSizeMake(MAXFLOAT, 40)]; 
CGSize linesSz = [label.text sizeWithFont:label.font 
                        constrainedToSize:CGSizeMake(label.frame.size.width, MAXFLOAT) 
                            lineBreakMode:UILineBreakModeWordWrap]; 
if(sz.width <= linesSz.width) //判断是否折行
{ 
    lastPoint = CGPointMake(label.frame.origin.x + sz.width, label.frame.origin.y); 
} 
else 
{ 
    lastPoint = CGPointMake(label.frame.origin.x + 
             (int)sz.width % (int)linesSz.width,linesSz.height - sz.height); 
} 
相关文章
|
iOS开发
iOS TextView插入表情或者图片后字体变大或变小
iOS TextView插入表情或者图片后字体变大或变小
118 1
|
6月前
|
开发工具 Android开发 开发者
Android `.9.png` 图像是用于UI的可拉伸格式,保持元素清晰度和比例
【6月更文挑战第26天】Android `.9.png` 图像是用于UI的可拉伸格式,保持元素清晰度和比例。通过边上的黑线定义拉伸区域,右下角黑点标识内容区域,适应文本或组件大小变化。常用于按钮、背景等,确保跨屏幕尺寸显示质量。Android SDK 提供`draw9patch.bat`工具来创建和编辑。**
261 6
|
7月前
|
Web App开发 编解码 iOS开发
iOS字体像素与磅的对应关系
iOS字体像素与磅的对应关系
126 1
|
API Android开发
Android 中获取手机屏幕的宽度和高度(单位为像素)
Android 中获取手机屏幕的宽度和高度(单位为像素)
366 0
|
Android开发
关于安卓竖直图片拼接的自定义控件实现
安卓竖直图片拼接的自定义控件
142 0
关于安卓竖直图片拼接的自定义控件实现
|
iOS开发
iOS xib 实现兄弟控件N等分且宽高比例是1:N
iOS xib 实现兄弟控件N等分且宽高比例是1:N
421 0
iOS xib 实现兄弟控件N等分且宽高比例是1:N
|
Android开发 iOS开发
Android/iOS及设计中ARGB颜色值百分比透明度换算
Android/iOS及设计中ARGB颜色值百分比透明度换算 设计上经常要求对一个颜色值进行一定百分比的透明度,比如给定一个颜色0xFF0000FF(蓝色)要求80%透明,该如何处理呢?80%透明的蓝色值是多少呢?常见的颜色是RGB表示的,就比如上面的蓝色0xFF0000FF,这个颜色值是16进制表示的,其中0x后面接着的两个16进制数字‘FF’就是ARGB中的‘A’,即alpha。
2996 0
|
Web App开发 前端开发 JavaScript
Android WebView加载网页,图片等元素宽度大小不兼容手机屏幕的宽度
无论是Android手机还是iOS手机,使用WebView加载一些没有专门为手机屏幕做适配的网页的时候,就会出现网页中的图片等标签元素的宽度大小和手机屏幕的宽度不一致的情况,如下图 之所以会出现上面的情况,是因为网页中的...
2001 0