iOS应用中UILabel文字显示效果的常用设置总结
程序员文章站
2023-12-04 09:46:28
创建uilabel对象
复制代码 代码如下:
uilabel* label = [[uilabel alloc] initwithframe:self.view.bou...
创建uilabel对象
复制代码 代码如下:
uilabel* label = [[uilabel alloc] initwithframe:self.view.bounds];
设置显示文本
复制代码 代码如下:
label.text = @"this is a uilabel demo,";
设置文本字体
复制代码 代码如下:
label.font = [uifont fontwithname:@"arial" size:35];
设置文本颜色
复制代码 代码如下:
label.textcolor = [uicolor yellowcolor];
设置文本水平显示位置
复制代码 代码如下:
label.textalignment = uitextalignmentcenter;
设置背景颜色
复制代码 代码如下:
label.backgroundcolor = [uicolor bluecolor];
设置单词折行方式
复制代码 代码如下:
label.linebreakmode = uilinebreakmodewordwrap;
设置label是否可以显示多行,0则显示多行
复制代码 代码如下:
label.numberoflines = 0;
动态调整uilabel高度
复制代码 代码如下:
[label sizetofit];
根据内容大小,动态设置uilabel的高度
复制代码 代码如下:
cgsize size = [label.text sizewithfont:label.font constrainedtosize:self.view.bounds.size linebreakmode:label.linebreakmode];
cgrect rect = label.frame;
rect.size.height = size.height;
label.frame = rect;
换行模式
复制代码 代码如下:
typedef enum {
uilinebreakmodewordwrap = 0, // 以空格为边界,保留整个单词
uilinebreakmodecharacterwrap, // 保留整个字符
uilinebreakmodeclip, // 到边界为止
uilinebreakmodeheadtruncation, // 省略开始,以……代替
uilinebreakmodetailtruncation, // 省略结尾,以……代替
uilinebreakmodemiddletruncation, // 省略中间,以……代替,多行时作用于最后一行
} uilinebreakmode;
其他:
uilinebreakmodewordwrap = 0,
以单词为单位换行,以单位为单位截断。
uilinebreakmodecharacterwrap,
以字符为单位换行,以字符为单位截断。
uilinebreakmodeclip,
以单词为单位换行。以字符为单位截断。
uilinebreakmodeheadtruncation,
以单词为单位换行。如果是单行,则开始部分有省略号。如果是多行,则中间有省略号,省略号后面有4个字符。
uilinebreakmodetailtruncation,
以单词为单位换行。无论是单行还是多行,都是末尾有省略号。
uilinebreakmodemiddletruncation,
以单词为单位换行。无论是单行还是多行,都是中间有省略号,省略号后面只有2个字符。
技巧:根据字符串长度自动适应宽度和高度
复制代码 代码如下:
//这个frame是初设的,没关系,后面还会重新设置其size。
uilabel *label = [[uilabel alloc] initwithframe:cgrectmake(0,0,0,0)];
label.numberoflines = 0;
label.backgroundcolor = [uicolor clearcolor];
nsdictionary *attributes = @{nsfontattributename:[uifont systemfontofsize:20],};
nsstring *str = @"abcdefg你上课可是你的拿到了";
cgsize textsize = [str boundingrectwithsize:cgsizemake(100, 100) options:nsstringdrawingtruncateslastvisibleline attributes:attributes context:nil].size;;
[label setframe:cgrectmake(100, 100, textsize.width, textsize.height)];
label.textcolor = [uicolor greencolor];
label.text = str;
[self.view addsubview:label];