Storyboard学习四(Label)

本文详细介绍了UILabel的各种属性及其使用方法,包括文本内容、字体样式、颜色调整、文本对齐方式、行数设置等,并提供了如何让文本大小自适应Label宽度的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

UILabel继承了UIView,它可以设置UIView所支持的属性。

UILabel *label1 = [[UILabel alloc]initWithFrame:CGRectMake(50.0, 20.0, 200.0, 50.0)];  //设置Label的位置和大小
//设置显示文字
label1.text = @"用户名";
//设置字体:粗体,正常的是 SystemFontOfSize
label1.font = [UIFont boldSystemFontOfSize:20];
//设置文字颜色
label1.textColor = [UIColor orangeColor];
//设置文字位置
label1.textAlignment = UITextAlignmentRight;
label2.textAlignment = UITextAlignmentCenter;
//设置字体大小适应label宽度
label4.adjustsFontSizeToFitWidth = YES;
//设置label的行数
label5.numberOfLines = 2;
UIlabel.backgroudColor=[UIColor clearColor]; //可以去掉背景色

//设置高亮
label6.highlighted = YES;
label6.highlightedTextColor = [UIColor orangeColor];
//设置阴影
label7.shadowColor = [UIColor redColor];
label7.shadowOffset = CGSizeMake(1.0,1.0);
//设置是否能与用户进行交互
label7.userInteractionEnabled = YES;
//设置label中的文字是否可变,默认值是YES
label3.enabled = NO;
//设置文字过长时的显示格式
label3.lineBreakMode = UILineBreakModeMiddleTruncation;//截去中间
//  typedef enum {
//      UILineBreakModeWordWrap = 0,
//      UILineBreakModeCharacterWrap,
//      UILineBreakModeClip,//截去多余部分
//      UILineBreakModeHeadTruncation,//截去头部
//      UILineBreakModeTailTruncation,//截去尾部
//      UILineBreakModeMiddleTruncation,//截去中间
//  } UILineBreakMode;

//如果adjustsFontSizeToFitWidth属性设置为YES,这个属性就来控制文本基线的行为
label4.baselineAdjustment = UIBaselineAdjustmentNone;
//  typedef enum {
//      UIBaselineAdjustmentAlignBaselines,
//      UIBaselineAdjustmentAlignCenters,
//      UIBaselineAdjustmentNone,
//  } UIBaselineAdjustment;

有时需要设置UILabel中文本的行数,其属性值默认为1,用于设置该UILabel只能显示一行文本。

oldPasswordLabel.numberOfLines = 2;

UIFont字体设置
一、创建任意样式字体

label.font = [UIFont fontWithName:@"fontName" size:17];  
label.font = [label.font fontWithSize:17];  

二、创建指定大小的系统默认字体(默认:Helvetica)

label.font = [UIFont systemFontOfSize:17];  
label.font = [UIFont boldSystemFontOfSize:17];  // 指定大小粗体  
label.font = [UIFont italicSystemFontOfSize:17];  // 指定大小斜体  

三、获取可用的字体名数组

NSArray *fontFamilies = [UIFont familyNames];                           // 返回所有可用的fontFamily  
NSArray *fontNames = [UIFont fontNamesForFamilyName:@"fongFamilyName"]; // 返回指定fontFamily下的所有fontName  

四、获取指定字体的familyName/fontName

NSString *familyName = [label.font familyName];  
NSString *fontName = [label.font fontName];  

五、获取系统标准字体大小

CGFloat labelFontSize = [UIFont labelFontSize];    // Returns the standard font size used for labels.  
CGFloat buttonFontSize = [UIFont buttonFontSize];  // Returns the standard font size used for buttons.  
CGFloat smallSystemFontSize = [UIFont smallSystemFontSize]; // Returns the size of the standard small system font.  
CGFloat systemFontSize = [UIFont systemFontSize];  // Returns the size of the standard system font.  

文本大小自适应
文本大小自适应需要调用NSString类的实例方法计算出文本的size,然后根据这个size来设定UILabel的frame来实现。计算size的方法有:

(1) - sizeWithFont:

- (CGSize)countTextSize:(NSString *)text  
{  
    /* 
     1、换行方式默认取NSLineBreakByWordWrapping; 
     2、求出的size是单行显示时的高度和宽度. 
     */  
    UIFont *font = [UIFont fontWithName:@"Arial" size:20.0f];  
    CGSize size = [text sizeWithFont:font];  
    return  size;  
}  

(2) - sizeWithFont: forWidth: lineBreakMode:

- (CGSize)countTextSize:(NSString *)text  
{  
    /* 
     1、如果指定宽度小于字符串宽度,则宽度返回0;  
     2、求出的size是单行显示时的高度和宽度. 
     */  
    UIFont *font = [UIFont fontWithName:@"Arial" size:20.0f];  
    CGSize size = [text sizeWithFont:font forWidth:400.0f lineBreakMode:NSLineBreakByWordWrapping];  
    return  size;  
}  
  • sizeWithFont: constrainedToSize:
- (CGSize)countTextSize:(NSString *)text  
{  
    /* 
     字符串用指定字体在指定区域进行单行显示时,需要的高度和宽度; 
     一般的用法是,指定区域的高度固定而宽度用MAXFLOAT,则返回值包含对应的宽度; 
     如果指定区域的宽度不够,则宽度返回0;高度不够则没影响; 
     核心:单行显示,指定区域的宽度要够大,获取宽度. 
     */  
    UIFont *font = [UIFont fontWithName:@"Arial" size:20.0f];  
    CGSize size = [text sizeWithFont:font constrainedToSize:CGSizeMake(MAXFLOAT, 100.0f)];  
    return  size;  
}  

(4) - sizeWithFont: constrainedToSize: lineBreakMode: (最常用)

- (CGSize)countTextSize:(NSString *)text  
{  
    /* 
     字符串在指定区域内按照指定的字体显示时,需要的高度和宽度(宽度在字符串只有一行时有用) 
     一般用法:指定区域的宽度而高度用MAXFLOAT,则返回值包含对应的高度 
     如果指定区域的宽度指定,而字符串要显示的区域的高度超过了指定区域的高度,则高度返回0 
     核心:多行显示,指定宽度,获取高度 
     */  
    UIFont *font = [UIFont fontWithName:@"Arial" size:20.0f];  
    CGSize size = [text sizeWithFont:font constrainedToSize:CGSizeMake(320.f, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping];  
    return  size;  
}  

(5) - sizeWithFont: minFontSize: actualFontSize: forWidth: lineBreakMode:

- (CGSize)countTextSize:(NSString *)text  
{  
    /* 
     虽然指定了换行方式,在实际计算时也会换行,但返回的结果只是第一行的高度很宽度; 
     指定了应该显示的字体,最小的字体,实际的字体,在实际计算中,如果宽度不够,则尽量缩小字符串的字体直至能够一行全部显示,如果缩到最小还不能完全显示字符串,则进行截断,返回截断后的字符串的高度和宽度;  
     字体实际的大小,存放在 actualFontSize里. 
     */  
    UIFont *font = [UIFont fontWithName:@"Arial" size:20.0f];  
    CGFloat f = 0.0f;   
    CGSize size = [text sizeWithFont:font minFontSize:10.0f actualFontSize:&f forWidth:100.0f lineBreakMode:NSLineBreakByWordWrapping];  
    return  size;  
}  

转自:http://www.cnblogs.com/heyonggang/p/3508754.html
资料:http://blog.youkuaiyun.com/mamong/article/details/8542404

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值