欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

iOS开发之UILabel文本的宽度和高度计算实例讲解

程序员文章站 2022-04-12 20:02:22
在ios开发中我们都会遇到界面搭建中uilabel文本的宽度和高度的不可预估带来的适配或者约束中的麻烦。 1.单行 计算单行文本较为简单,我尽量写的详细一些。 //1.创建uilabel但不要...

在ios开发中我们都会遇到界面搭建中uilabel文本的宽度和高度的不可预估带来的适配或者约束中的麻烦。

1.单行

计算单行文本较为简单,我尽量写的详细一些。

 //1.创建uilabel但不要设置frame
 uilabel *text = [[uilabel alloc]init];
 
 //2.给字符串
 text.text = @"hello world!";
 
 //3.设置uifont
 text.font = [uifont systemfontofsize:14];
 
 //4.根据text的font和字符串自动算出size(重点)
 cgsize size = [text.text sizewithattributes:@{nsfontattributename:text.font}];
 
 //5.根据size设置frame
 text.frame = cgrectmake(100, 100, size.width, size.height);

 //设置背景让我们看一下大小效果
 text.backgroundcolor = [uicolor graycolor];

运行效果:??iOS开发之UILabel文本的宽度和高度计算实例讲解

2.多行

计算多行文本就会比较麻烦了。

 //1.创建uilabel但不要设置frame
 uilabel *text = [[uilabel alloc]init];
 
 //2.给多行字符串
 text.text = @"hello world!hello world!hello world!hello world!hello world!";
 
 //3.设置自动换行
 text.numberoflines = 0;
 
 //4.设置uifont
 text.font = [uifont systemfontofsize:14];
 
 /**
  5.根据text的font和字符串自动算出size(重点)
  200:你希望的最大宽度
  maxfloat:最大高度为最大浮点数
  **/
 cgsize size = [text.text boundingrectwithsize:cgsizemake(200, maxfloat)
options:nsstringdrawinguseslinefragmentorigin
attributes:@{nsfontattributename:text.font}
context:nil].size;
 
 //6.根据size设置frame
 text.frame = cgrectmake(100, 100, size.width, size.height);

 //设置背景让我们看一下大小效果
 text.backgroundcolor = [uicolor graycolor];

运行效果:

iOS开发之UILabel文本的宽度和高度计算实例讲解