文档章节

IOS 动态获取 UILabel 元素的宽度和高度

Jack088
 Jack088
发布于 2015/10/16 14:57
字数 457
阅读 1040
收藏 3


//高度自适应
UIFont *font = [UIFont fontWithName:@"Arial" size:13];
//设置一个行高上限
CGSize size = CGSizeMake(320,1000);
//计算实际frame大小,并将label的frame变成实际大小
CGSize labelsize = [entity.content sizeWithFont:font constrainedToSize:size lineBreakMode:UILineBreakModeWordWrap];
DebugLog(@"height = %f", height) ;
方法一:
CGSize titleSize = [titleContent boundingRectWithSize:CGSizeMake(kScreen_Width, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13]} context:nil].size;
或方法二:
CGSize labelsize = [str sizeWithFont:font constrainedToSize:size lineBreakMode:UILineBreakModeWordWrap];


//获取单行字符串的宽度和高度
NSString *content = @"获取 UILabel 宽度和高度测试";
CGSize size =[content sizeWithAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13]}];

//获取多行字符串的宽度和高度
UILabel *titleLabel = [[UILabel alloc]init];
    titleLabel.font = [UIFont systemFontOfSize:1];
    NSString *titleContent = @"获取 UILabel 宽度和高度测试获取 UILabel 宽度和高度测试获取 UILabel 宽度和高度测试获取 UILabel 宽度和高度测试获取 UILabel 宽度和高度测试获取 UILabel 宽度和高度测试获取 UILabel 宽度和高度测试";
    titleLabel.text = titleContent;
    titleLabel.numberOfLines = 0;//多行显示,计算高度
    titleLabel.textColor = [UIColor lightGrayColor];
    CGSize titleSize = [titleContent boundingRectWithSize:CGSizeMake(kScreen_Width, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13]} context:nil].size;
    titleLabel.size = titleSize;
    titleLabel.x = 0;
    titleLabel.y = 0;
    [self.view addSubview:titleLabel];
    
//或者
//初始化label
UILabel *label = [[UILabel alloc] init];
//设置自动行数与字符换行
[label setNumberOfLines:0];
[label.lineBreakMode:UILineBreakModeWordWrap]; 
// 测试字串
NSString *str = @"获取 UILabel 宽度和高度测试获取 UILabel 宽度和高度测试获取 UILabel 宽度和高度测试获取 UILabel 宽度和高度测试获取 UILabel 宽度和高度测试获取 UILabel 宽度和高度测试获取 UILabel 宽度和高度测试";
UIFont *font = [UIFont fontWithName:@"Arial" size:13];
//设置一个行高上限
CGSize size = CGSizeMake(320,1000);
//计算实际frame大小,并将label的frame变成实际大小
CGSize labelsize = [str sizeWithFont:font constrainedToSize:size lineBreakMode:UILineBreakModeWordWrap];
[label setFrame:CGRectMake:(0,0, labelsize.width, labelsize.height)];







© 著作权归作者所有

共有 人打赏支持
Jack088
粉丝 41
博文 394
码字总数 58343
作品 0
程序员
[iOS Animation]-CALayer 专用图层 富文本

富文本 iOS 6中,Apple给UILabel和其他UIKit文本视图添加了直接的属性化字符串的支持,应该说这是一个很方便的特性。不过事实上从iOS3.2开始CATextLayer就已经支持属性化字符串了。这样的话,...

浩浩老师
2015/09/23
0
0
用视图上移解决UITextField/UITextView被键盘遮盖问题

先看看UILabel/UITextField/UITextView的区别: UILabel 显示的文本只读,无法编辑,可以根据文字个数自动换行; UITextField 可编辑本文,但是无法换行,只能在一行显示;当点击键盘上的ret...

yoyoso
2015/03/18
0
0
《小印记》iOS源码分享--自定义弹框篇

笔者前不久终于发布了自己的APP《小印记》,在此分享一些iOS源码,如果读者学到了有用的东西,希望能前往App Store下载《小印记》支持一下笔者,谢谢! 《小印记》iOS源码分享--极光推送实践...

_子墨
2017/03/22
0
0
​Xamarin iOS教程之自定义视图

Xamarin iOS教程之自定义视图 Xamarin iOS自定义视图 工具栏中的视图在实际应用开发中用的很多,但是为了吸引用户的眼球,开发者可以做出一些自定义的视图。 【示例2-33】以下将实现一个自定...

大学霸
2015/06/24
0
0
UILabel和UITextView文字换行差异

多行文本换行时,一般要求结尾如果是标点符号,标点符号不能单独占一行,需要将上一行的最后一个文字将和标点符号一起放在下一行。 设置 lineBreakMode = .byWordWrapping,按单词分割换行。...

十八郎
07/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JS三元运算示例

1. topFlag=topFlag ==0?1:0; 等于 if(topFlag=00){ topFlag=1; }else if(topFlag == 1){ topFlag=0; } 2. 5>3?alert('5大'):alert('3大'); 即 if(5>3){alert('5大')}else{alert('3大')}; 注......

森火
今天
0
0
利用Slf4j的MDC跟踪方法调用链

why? 一个web项目通常提供很多URL访问地址, 项目一般都是分层处理,例如Controller——>Service——>DAO。 如果想根据日志查看用户一次请求都走了哪些方法(多数是查错误)。 如果系统是多人...

杨春炼
今天
9
0
Maven介绍及安装

Maven介绍及安装 以下内容是本人早期学习时的笔记,可能比较详实繁琐,现在复习一下Maven,顺便将内容抛出来,供大家一起学习进步。 一、Maven简介 Maven是Apache旗下的一款项目管理工具,是...

星汉
今天
0
0
小程序Aes解密

主要步骤: 1、下载AES源码(JS版) 2、在小程序中新建一个公共的文件夹,把AES源码拷贝进去(注意:需要暴露接口 module.exports = CryptoJS;) 3、添加一个用于加密解密的公共JS,可取名为...

Mr_Tea伯奕
今天
0
0
Go实现文件传输(基本传输可用)

发送端 package mainimport ("fmt""os""net""io")func SendFile(path string, connect net.Conn){file, oerr :=os.Open(path)if oerr !=nil{fmt.Println("Open", oerr)......

CHONGCHEN
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部