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); 
} 
相关文章
|
8月前
|
iOS开发
iOS TextView插入表情或者图片后字体变大或变小
iOS TextView插入表情或者图片后字体变大或变小
69 1
|
测试技术 Swift
Swift:UILabel超出宽度文字的截取
Swift:UILabel超出宽度文字的截取
432 0
Swift:UILabel超出宽度文字的截取
|
8月前
|
iOS开发
iOS 渐变颜色 CGGradientCreateWithColorComponents 属性介绍
iOS 渐变颜色 CGGradientCreateWithColorComponents 属性介绍
65 0
|
iOS开发
iOS - 设置图片为背景色,且拉伸到指定大小
iOS - 设置图片为背景色,且拉伸到指定大小
265 0
|
Android开发
关于安卓竖直图片拼接的自定义控件实现
安卓竖直图片拼接的自定义控件
111 0
关于安卓竖直图片拼接的自定义控件实现
|
Android开发
关于安卓竖直滚动文字自定义控件的探索
安卓竖直滚动文字自定义控件
96 0
|
iOS开发
iOS 去除 TabBarItem的图片默认颜色
iOS 去除 TabBarItem的图片默认颜色
112 0
|
Android开发 iOS开发
Android/iOS及设计中ARGB颜色值百分比透明度换算
Android/iOS及设计中ARGB颜色值百分比透明度换算 设计上经常要求对一个颜色值进行一定百分比的透明度,比如给定一个颜色0xFF0000FF(蓝色)要求80%透明,该如何处理呢?80%透明的蓝色值是多少呢?常见的颜色是RGB表示的,就比如上面的蓝色0xFF0000FF,这个颜色值是16进制表示的,其中0x后面接着的两个16进制数字‘FF’就是ARGB中的‘A’,即alpha。
2879 0
|
Web App开发 前端开发 JavaScript
Android WebView加载网页,图片等元素宽度大小不兼容手机屏幕的宽度
无论是Android手机还是iOS手机,使用WebView加载一些没有专门为手机屏幕做适配的网页的时候,就会出现网页中的图片等标签元素的宽度大小和手机屏幕的宽度不一致的情况,如下图 之所以会出现上面的情况,是因为网页中的...
1922 0