iOS-UILabel

继承关系:UIView : UIResponder : NSObject
///UILabel 显示的文本只读,无法编辑,可以根据文字个数自动换行;
///UITextField 可编辑本文,但是无法换行,只能一行显示;当点击键盘上的return时,会触发事件。
////UITextView 可编辑文本,提供换行功能。

1、声明 初始化 布局

//创建uilabel   
    UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(20, 40, 280, 80)];

2、背景色

//设置背景色    
   label1.backgroundColor = [UIColor grayColor];
//是否能与用户交互    
   label1.userInteractionEnabled = YES;
//设置tag    
   label1.tag = 91;

3、文本 字体 字间距 行间距 段间距

//设置标签文本    
    label1.text = @"Hello world!";    
//设置标签文本字体和字体大小    
    label1.font = [UIFont fontWithName:@"Arial" size:30];    
        
//字体、字号
//系统字体
    label.font = [UIFont systemFontOfSize:30.0];
//加粗
    label.font = [UIFont boldSystemFontOfSize:30.0];
//斜体
    label.font = [UIFont italicSystemFontOfSize:30.0];
//拿到所有字体
    NSArray* fonts = [UIFont familyNames];
//通过字体名字设置字体
    label.font = [UIFont fontWithName:[fonts objectAtIndex:5] size:30.0];
//文本最多行数,为0时没有最大行数限制 自动换行   
    label1.numberOfLines = 2;    
//最小字体,行数为1时有效,默认为0.0    
    label1.minimumFontSize = 10.0;

//段 行 字间距
    label.numberOfLines = 0;
    NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:text attributes:@{NSKernAttributeName : @(1.5f)}];//字间距
    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
    [paragraphStyle setLineSpacing:5.0];//设置行间距
    [paragraphStyle setParagraphSpacing:50.0];//设置段间距
    [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [text length])];
    label.attributedText = attributedString;

// NSMutableParagraphStyle

4、对齐方式、颜色

//设置文本对其方式    
   label1.textAlignment = UITextAlignmentCenter;    
//文本对齐方式有以下三种    
   //typedef enum {    
   //    UITextAlignmentLeft = 0,左对齐    
   //    UITextAlignmentCenter,居中对齐    
   //    UITextAlignmentRight, 右对齐                     
   //} UITextAlignment;    
 //注:现在的版本已经弃用上述对齐方式,以下方为主
 /* Values for NSTextAlignment */
typedef NS_ENUM(NSInteger, NSTextAlignment) {
   NSTextAlignmentLeft      = 0,    // Visually left aligned
#if TARGET_OS_IPHONE
   NSTextAlignmentCenter    = 1,    // Visually centered
   NSTextAlignmentRight     = 2,    // Visually right aligned
#else /* !TARGET_OS_IPHONE */
   NSTextAlignmentRight     = 1,    // Visually right aligned
   NSTextAlignmentCenter    = 2,    // Visually centered
#endif
   NSTextAlignmentJustified = 3,    // Fully-justified. The last line in a paragraph is natural-aligned.
   NSTextAlignmentNatural   = 4,    // Indicates the default alignment for script
} NS_ENUM_AVAILABLE_IOS(6_0);

5、颜色

//文本颜色    
    label1.textColor = [UIColor blueColor];
//颜色渐变
    label.textColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@""]];
//文本高亮    
    label1.highlighted = YES;
//高亮颜色
    label1.highlightedTextColor = [UIColor blueColor];    
//文本是否可变 :未激活,灰色,设置颜色无效
    label1.enabled = YES;    
//去掉label背景色    
    label1.backgroundColor = [UIColor clearColor];    
   
//文本阴影颜色    
    label1.shadowColor = [UIColor grayColor];    
//阴影偏移量   
    label1.shadowOffset = CGSizeMake(1.0, 1.0);

6、截取方式

//超出label边界文字的截取方式    
   label1.lineBreakMode = UILineBreakModeTailTruncation;    
//截取方式有以下6种    
   //typedef enum {           
   //    UILineBreakModeWordWrap = 0,    以空格为边界,保留整个单词             
   //    UILineBreakModeCharacterWrap,   保留整个字符             
   //    UILineBreakModeClip,            到边界为止             
   //    UILineBreakModeHeadTruncation,  省略开始,以……代替           
   //    UILineBreakModeTailTruncation,  省略结尾,以……代替          
   //    UILineBreakModeMiddleTruncation,省略中间,以……代替,多行时作用于最后一行           
   //} UILineBreakMode;

7、文本基线 自适应大小

//调整基线 需设置文本文字自适应大小
    label1.adjustsFontSizeToFitWidth = YES;    
//baselineAdjustment这个值控制文本的基线位置,只有文本行数为1是有效    
    label1.baselineAdjustment = UIBaselineAdjustmentAlignCenters;    
//有三种方式    
//typedef enum {    
//    UIBaselineAdjustmentAlignBaselines = 0, 默认值文本最上端于label中线对齐    
//    UIBaselineAdjustmentAlignCenters,//文本中线于label中线对齐    
//    UIBaselineAdjustmentNone,//文本最低端与label中线对齐    
//} UIBaselineAdjustment;

8、获取label

/*
- (void)buttonClick:(UIButton*)button{
    //父视图通过tag值获取子视图的指针对象
    /*
     子视图可以设置一个tag值,然后添加到父视图上,父视图就可以通过这个tag值拿到子视图的指针。
     tag值也可以保存一些用户的信息。
     */
    UILabel* label = (UILabel*)[self.view viewWithTag:100];
    label.text = @"我被修改了";
}
*/

9、自适应高度

//自动适应高度
    CGSize size = CGSizeMake(280, 1000);
    UIFont *lableFont = [UIFont fontWithName:@"Arial" size:12.0];
    CGSize labelSize = [label.text sizeWithFont:lableFont constrainedToSize:size];//7.0 ,现如下
    [label1.text boundingRectWithSize:(CGSize) options:(NSStringDrawingOptions) attributes:(NSDictionary *) context:(NSStringDrawingContext *)]
    label.frame = CGRectMake(0, 0, 280, labelSize.height);
//或者
CGSize size = [label sizeThatFits:CGSizeMake(200, MAXFLOAT)];//根据文字的长度返回一个最佳宽度和高度  

10、富文本

//简单富文本
    NSString *text = @"我是大坏蛋哦!";
    NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:text];
    [attributeString setAttributes:@{NSForegroundColorAttributeName : [UIColor yellowColor],   NSFontAttributeName : [UIFont systemFontOfSize:18]} range:NSMakeRange(2, 3)];
    label1.attributedText = attributeString;
//修改Range 所包含文本的 颜色、字体大小

11、圆角 边框

//圆角
    label.layer.backgroundColor =[UIColor yellowColor].CGColor;
    label.layer.cornerRadius =5.0;
    label.layer.frame = CGRectInset(label.layer.frame, 20, 20);
///边框
    label.layer.borderColor = [[UIColor redColor] CGColor];
    label.layer.borderWidth = 2;

12、添加到主视图

    [self.view addSubview:label1];    
    [label1 release];

13、点击事件

//添加手势
UITapGestureRecognizer

不能循环改变text

自定义UILabel

你可能感兴趣的:(iOS-UILabel)