iOS开发之UILabel文本的宽度和高度计算实例讲解
程序员文章站
2024-01-08 12:40:10
在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];
运行效果:??
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];
运行效果: