文档章节

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

Jack088
 Jack088
发布于 2015/10/16 14:57
字数 457
阅读 1051
收藏 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
博文 463
码字总数 67241
作品 0
程序员
私信 提问
[iOS Animation]-CALayer 专用图层 富文本

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

浩浩老师
2015/09/23
0
0
实现 iOS 上的井字游戏

下载 demo - 70.1 KB 简介 本文介绍如何用 MVC 模式在 iOS 上实现双人对战的井字游戏. 读者最好有一些 iOS 编程基础, 以便更好的理解本文的代码. 希望这篇文章对提高读者的 iOS 和 MVC 编程水...

oschina
2014/11/09
2.5K
4
疯狂ios讲义之使用代码创建UI界面

更实际的情况是,在程序运行开始时,程序已经具有一个初始的程序界面(初始界面可能只包含一个UIView),在程序运行过程中,程序需要根据用户交互来动态添加、删除UI控件。 在这种需求下,我...

博文视点
2014/01/20
948
0
用视图上移解决UITextField/UITextView被键盘遮盖问题

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

yoyoso
2015/03/18
0
0
UILabel和UITextView文字换行差异

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

十八郎
2018/07/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

jenkins 配置

1. ssh-keygen -t rsa 2. 配置 GitLab 用户 创建一个用户或选择一个已有用户,用来让 Jenkins 和 GitLab API 交互。这个用户将需要是全局的管理员或添加进每个组/工程,并作为成员。需要开发...

应如是
27分钟前
1
0
中台迷思

到处都在喊中台,到处都是中台,中台这个词在我看来已经被滥用了。 在有些人眼里:中台就是技术平台,像微服务开发框架、Devops平台、PaaS平台,容器云之类的,人们都叫它“技术中台”。 在有...

老道士
34分钟前
3
0
Linux命令参数解析

Linux命令参数 通过一个例子来理解什么是Linux命令参数。以Linux中常用的删除命令“rm”为例,输入“rm --help”可以看到如下信息,其中红色框内的就是命令参数。经常使用Linux对命令参数应该...

RongJinhui0
37分钟前
1
0
边缘节点服务ENS重磅升级 阿里云首次定义“边缘云计算”概念层层深入

摘要: 在这一横一纵之间,阿里云在2018年率先提供了基于运营商边缘节点和网络的弹性分布式算力资源平台,也就是边缘节点服务ENS,连接最后10公里的ENS可以帮助用户将计算、转发等业务下沉至...

阿里云云栖社区
42分钟前
2
0
阿里云 Aliplayer高级功能介绍(四):直播时移

基本介绍 时移直播基于常规的HLS视频直播,直播推流被切分成TS分片,通过HLS协议向播放用户分发,用户请求的m3u8播放文件中包含不断刷新的TS分片地址;对于常规的HLS直播而言,TS分片地址及相...

阿里云官方博客
45分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部