UILabel的各种属性与方法的使用

UILabel 多行文字自动换行 (自动折行)

1
.UIView *footerView = [[UIView alloc] initWithFrame:CGRectMake(10, 100, 300, 180)]; 2. UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 100, 300, 150)]; 3. label.text = @"where are you? where are you? where are you? where are you? where are you? where are you? where are you? where are you? where are you? where are you?"; 4. //清空背景颜色 5. label.backgroundColor = [UIColor clearColor]; 6. //设置字体颜色为白色 7. label.textColor = [UIColor whiteColor]; 8. //文字居中显示 9. label.textAlignment = UITextAlignmentCenter; 10. //自动折行设置 11. label.lineBreakMode = UILineBreakModeWordWrap; 12. label.numberOfLines = 0;
复制代码

 

iOS的UILabel设置居上对齐,居中对齐,居下对齐

在iOS中默认的UILabel中的文字在竖直方向上只能居中对齐,博主参考国外网站,从UILabel继承了一个新类,实现了居上对齐,居中对齐,居下对齐。具体如下:

  1. //  
  2. //  myUILabel.h  
  3. //    
  4. //  
  5. //  Created by yexiaozi_007 on 3/4/13.  
  6. //  Copyright (c) 2013 yexiaozi_007. All rights reserved.  
  7. //  
  8.   
  9. #import <UIKit/UIKit.h>  
  10. typedef enum  
  11. {  
  12.     VerticalAlignmentTop = 0, // default  
  13.     VerticalAlignmentMiddle,  
  14.     VerticalAlignmentBottom,  
  15. } VerticalAlignment;  
  16. @interface myUILabel : UILabel  
  17. {  
  18. @private  
  19. VerticalAlignment _verticalAlignment;  
  20. }  
  21.   
  22. @property (nonatomic) VerticalAlignment verticalAlignment;  
  23.   
  24. @end  

 

  1. //  
  2. //  myUILabel.m  
  3. //    
  4. //  
  5. //  Created by yexiaozi_007 on 3/4/13.  
  6. //  Copyright (c) 2013 yexiaozi_007. All rights reserved.  
  7. //  
  8.   
  9. #import "myUILabel.h"  
  10.   
  11. @implementation myUILabel  
  12. @synthesize verticalAlignment = verticalAlignment_;  
  13.   
  14. - (id)initWithFrame:(CGRect)frame {  
  15.     if (self = [super initWithFrame:frame]) {  
  16.         self.verticalAlignment = VerticalAlignmentMiddle;  
  17.     }  
  18.     return self;  
  19. }  
  20.   
  21. - (void)setVerticalAlignment:(VerticalAlignment)verticalAlignment {  
  22.     verticalAlignment_ = verticalAlignment;  
  23.     [self setNeedsDisplay];  
  24. }  
  25.   
  26. - (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines {  
  27.     CGRect textRect = [super textRectForBounds:bounds limitedToNumberOfLines:numberOfLines];  
  28.     switch (self.verticalAlignment) {  
  29.         case VerticalAlignmentTop:  
  30.             textRect.origin.y = bounds.origin.y;  
  31.             break;  
  32.         case VerticalAlignmentBottom:  
  33.             textRect.origin.y = bounds.origin.y + bounds.size.height - textRect.size.height;  
  34.             break;  
  35.         case VerticalAlignmentMiddle:  
  36.             // Fall through.  
  37.         default:  
  38.             textRect.origin.y = bounds.origin.y + (bounds.size.height - textRect.size.height) / 2.0;  
  39.     }  
  40.     return textRect;  
  41. }  
  42.   
  43. -(void)drawTextInRect:(CGRect)requestedRect {  
  44.     CGRect actualRect = [self textRectForBounds:requestedRect limitedToNumberOfLines:self.numberOfLines];  
  45.     [super drawTextInRect:actualRect];  
  46. }  
  47.   
  48.   
  49. @end  

 

在使用时:

 

    1. lbl_mylabel = [[myUILabel alloc] initWithFrame:CGRectMake(20, 50, 150, 600)];  
    2. UIColor *color = [UIColor colorWithPatternImage:[UIImage imageNamed:@"halfTransparent.png"]];//使用半透明图片作为label的背景色  
    3. lbl_mylabel.backgroundColor = color;  
    4. lbl_mylabel.textAlignment = UITextAlignmentLeft;  
    5. lbl_mylabel.textColor = UIColor.whiteColor;  
    6. lbl_mylabel.lineBreakMode = UILineBreakModeWordWrap;  
    7. lbl_mylabel.numberOfLines = 0;  
    8. [lbl_mylabel setVerticalAlignment:VerticalAlignmentTop];  
    9. [self addSubview:lbl_mylabel]; 

 

 

ios UILabel 变量名不能为title

-[UILabel copyWithZone:]: unrecognized selector sent to instance

 
遇到了这样一个错误,找了半天没找到是什么错误,于是,Google搜索,打开第一个链接http://stackoverflow.com/questions/10784207/uilabel-copywithzone-unrecognized-selector-sent-to-instance
 
UILabel 设置过长文本中间为省略号

 label.lineBreakMode = NSLineBreakByTruncatingMiddle;

 
http://blog.csdn.net/zhaopenghhhhhh/article/details/16331041
复制代码
·UILable是iPhone界面最基本的控件,主要用来显示文本信息。
·常用属性和方法有:
1、创建
CGRect rect = CGRectMake(100, 200, 50, 50);
UILabel *label = [[UILabel alloc] initWithFrame:rect];
2、text //设置和读取文本内容,默认为nil
label.text = @”文本信息”; //设置内容
NSLog(@”%@”, label.text); //读取内容
3、textColor //设置文字颜色,默认为黑色
lable.textColor = [UIColor redColor];
4、font //设置字体大小,默认17
label.font = [UIFont systemFontOfSize:20]; //⼀一般方法
label.font = [UIFont boldSystemFontOfSize:20]; //加粗方法
label.font = [UIFont fontWithName:@"Arial" size:16]; //指定
字体的方法
//还有⼀一种从外部导入字体的方法。
5、textAlignment //设置标签文本对齐方式。
label.textAlignment = NSTextAlignmentCenter; //还有
NSTextAlignmentLeft、 NSTextAlignmentRight.
6、numberOfLines //标签最多显示行数,如果为0则表示多行。
label.numberOfLines = 2;
7、enabled //只是决定了Label的绘制方式,将它设置
为NO将会使文本变暗,表示它没有激活,这时向它设置颜色值是无效的。
label.enable = NO;
8、highlighted //是否高亮显示
label.highlighted = YES;
label.highlightedTextColor = [UIColor orangeColor]; //高亮
显示时的文本颜色
9、ShadowColor //设置阴影颜色 
[label setShadowColor:[UIColor blackColor]];
10、ShadowOffset //设置阴影偏移量
[label setShadowOffset:CGSizeMake(-1, -1)];
11、baselineAdjustment //如果adjustsFontSizeToFitWidth属性设
置为YES,这个属性就来控制文本基线的行为。
label.baselineAdjustment = UIBaselineAdjustmentNone;
UIBaselineAdjustmentAlignBaselines = 0,默认,文本最上端与中线对齐。
UIBaselineAdjustmentAlignCenters,  文本中线与label中线对齐。
UIBaselineAdjustmentNone, 文本最低端与label中线对齐。
12、Autoshrink //是否自动收缩
Fixed Font Size 默认,如果Label宽度小于文字长度时时,文字大小不自动缩放
minimumScaleFactor 设置最小收缩比例,如果Label宽度小于文字长度时,文字
进行收缩,收缩超过比例后,停止收缩。
minimumFontSize 设置最小收缩字号,如果Label宽度小于文字长度时,文字字号
减小,低于设定字号后,不再减小。//6.0以后不再使用了。
label.minimumScaleFactor = 0.5;
13、adjustsLetterSpacingToFitWidth //改变字母之间的间距来适应Label大小
myLabel.adjustsLetterSpacingToFitWidth = NO;
14、 lineBreakMode //设置文字过长时的显示格式             
label.lineBreakMode = NSLineBreakByCharWrapping;以字符为显示单位显
示,后面部分省略不显示。
label.lineBreakMode = NSLineBreakByClipping;剪切与文本宽度相同的内
容长度,后半部分被删除。
label.lineBreakMode = NSLineBreakByTruncatingHead;前面部分文字
以……方式省略,显示尾部文字内容。
label.lineBreakMode = NSLineBreakByTruncatingMiddle;中间的内容
以……方式省略,显示头尾的文字内容。
label.lineBreakMode = NSLineBreakByTruncatingTail;结尾部分的内容
以……方式省略,显示头的文字内容。
label.lineBreakMode = NSLineBreakByWordWrapping;以单词为显示单位显
示,后面部分省略不显示。
15、 adjustsFontSizeToFitWidth //设置字体大小适应label宽度  
label.adjustsFontSizeToFitWidth = YES;
16、attributedText:设置标签属性文本。
NSString *text = @"first";
NSMutableAttributedString *textLabelStr =
[[NSMutableAttributedString alloc]
initWithString:text];
[textLabelStr
setAttributes:@{NSForegroundColorAttributeName :
[UIColor lightGrayColor], NSFontAttributeName :
[UIFont systemFontOfSize:17]} range:NSMakeRange(11,
10)];
label.attributedText = textLabelStr;
17、竖排文字显示每个文字加一个换行符,这是最方便和简单的实现方式。
label.text = @"请\n竖\n直\n方\n向\n排\n列";
label.numberOfLines = [label.text length];


18、计算UIlabel 随字体多行后的高度
CGRect bounds = CGRectMake(0, 0, 200, 300);
heightLabel = [myLabel textRectForBounds:bounds
limitedToNumberOfLines:20]; //计算20行后的Label的Frame
NSLog(@"%f",heightLabel.size.height);
19、UILabel根据字数多少自动实现适应高度
UILabel *msgLabel = [[UILabel alloc]
initWithFrame:CGRectMake(15, 45, 0, 0)];
msgLabel.backgroundColor = [UIColor lightTextColor];
[msgLabel setNumberOfLines:0];
msgLabel.lineBreakMode = UILineBreakModeWordWrap;
msgLabel.font = [UIFont fontWithName:@"Arial" size:12];
CGSize size = CGSizeMake(290, 1000);
msgLabel.text = @"获取到的deviceToken,我们可以通过webservice服务提
交给.net应用程序,这里我简单处理,直接打印出来,拷贝到.net应用环境中使
用。";
CGSize msgSie = [msgLabel.text sizeWithFont:fonts
constrainedToSize:size];
[msgLabel setFrame:CGRectMake(15, 45, 290, msgSie.height)];


20、渐变字体Label
UIColor *titleColor = [UIColor colorWithPatternImage:[UIImage
imageNamed:@"btn.png"]];
NSString *title = @"Setting";
UILabel *titleLabel = [[UILabel alloc]
initWithFrame:CGRectMake(0, 0, 80, 44)];
titleLabel.textColor = titleColor;
titleLabel.text = title;
titleLabel.font = [UIFont boldSystemFontOfSize:20];
titleLabel.backgroundColor = [UIColor clearColor];
[self.view addSubview:titleLabel];
[titleLabel release];
21、Label添加边框
titleLabel.layer.borderColor = [[UIColor grayColor] CGColor];
titleLabel.layer.borderWidth = 2;
复制代码







#import "LabelTestViewController.h"     

@implementation LabelTestViewController     

/*   

 Accessing the Text Attributes   

 text  property     

 font  property     

 textColor  property     

 textAlignment  property     

 lineBreakMode  property       

 enabled  property     

 Sizing the Label’s Text   

 adjustsFontSizeToFitWidth  property     

 baselineAdjustment  property     

 minimumFontSize  property   无例   

 numberOfLines  property     

 Managing Highlight Values   

 highlightedTextColor  property     

 highlighted  property     

 Drawing a Shadow   

 shadowColor  property     

 shadowOffset  property     

 Drawing and Positioning Overrides   

 – textRectForBounds:limitedToNumberOfLines: 无例    

 – drawTextInRect:  无例   

 Setting and Getting Attributes   

 userInteractionEnabled  property     

 */    

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.     

- (void)viewDidLoad {     

    UILabel *label1 = [[UILabel alloc]initWithFrame:CGRectMake(50.020.0200.050.0)];     

    UILabel *label2 = [[UILabel alloc]initWithFrame:CGRectMake(50.080.0200.050.0)];     

    UILabel *label3 = [[UILabel alloc]initWithFrame:CGRectMake(50.0140.0200.050.0)];     

    UILabel *label4 = [[UILabel alloc]initWithFrame:CGRectMake(50.0200.0200.050.0)];     

    UILabel *label5 = [[UILabel alloc]initWithFrame:CGRectMake(50.0260.0200.050.0)];     

    UILabel *label6 = [[UILabel alloc]initWithFrame:CGRectMake(50.0320.0200.050.0)];     

    UILabel *label7 = [[UILabel alloc]initWithFrame:CGRectMake(50.0380.0200.050.0)];     

    //设置显示文字     

    label1.text = @"label1";     

    label2.text = @"label2";     

    label3.text = @"label3--label3--label3--label3--label3--label3--label3--label3--label3--label3--label3--";     

    label4.text = @"label4--label4--label4--label4--";     

    label5.text = @"label5--label5--label5--label5--label5--label5--";     

    label6.text = @"label6";     

    label7.text = @"label7";     

    //设置字体:粗体,正常的是 SystemFontOfSize     

    label1.font = [UIFont boldSystemFontOfSize:20];     

    //设置文字颜色  

    label1.textColor = [UIColor orangeColor];     

    label2.textColor = [UIColor purpleColor];     

    //设置文字位置     

    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;     

    [self.view addSubview:label1];     

    [self.view addSubview:label2];     

    [self.view addSubview:label3];     

    [self.view addSubview:label4];     

    [self.view addSubview:label5];     

    [self.view addSubview:label6];     

    [self.view addSubview:label7];     

    [label1 release];     

    [label2 release];     

    [label3 release];     

    [label4 release];     

    [label5 release];     

    [label6 release];     

    [label7 release];     

    [super viewDidLoad];     

}     

/*   

 // Override to allow orientations other than the default portrait orientation.   

 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {   

 // Return YES for supported orientations   

 return (interfaceOrientation == UIInterfaceOrientationPortrait);   

 }   

 */    

- (void)didReceiveMemoryWarning {     

    // Releases the view if it doesn't have a superview.     

    [super didReceiveMemoryWarning];     

    // Release any cached data, images, etc that aren't in use.     

}     

- (void)viewDidUnload {     

    // Release any retained subviews of the main view.     

    // e.g. self.myOutlet = nil;     

}     

- (void)dealloc {     

    [super dealloc];     

}     

@end  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值