UILabel(标签)


基本属性

  • 创建注意点

    • 1.1内容
    • 如果没有内容的话且背景颜色和父控件一样,也是看不见它
  • 显示内容 .text(NSString)

    UILabel *label = [UILabel alloc] init];
    label.text = @"XXXXX";
    
  • 字体的样式

    • 获取系统所有的字体样式
      NSArray *fontArray = [UIFont familyNames];
      
    • 字体大小
      label.font = [UIFont systemFontOfSize:(CGFloat)fontSize];
      label.font = [UIFont systemFontOfSize:(CGFloat)fontSize weight:(CGFloat)weight];
      
    • 黑体(黑体和斜体只能有一个
      label.font = [UIFont boldSystemFontOfSize:(CGFloat)fontSize];
      
    • 斜体(黑体和斜体只能活一个
      label.font = [UIFont italicSystemFontOfSize:(CGFloat)fontSize];
      
    • 根据字体名字设置
      label.font = [UIFont fontWithName:(NSString *)fontName size:(CGFloat)fontSize];
      
    • 字体的阴影颜色(default is nil,no shadow
      label.shadowColor = [UIColor ----];
      
  • 显示内容的显示格式 .textAlignment (NSTextAlignment)

    • 左对齐(default)
      label.textAlignment = NSTextAligmentLeft;
      
    • 居中
      label.textAlignment = NSTextAligmentCenter;
      
    • 右对齐
      label.textAlignment = NSTextAligmentRight;
      
  • 显示内容的缺省形式 .lienBreakMode(NSLineBreakMode)default is NSLineBreakByTruncatingTail

     label.lineBreakMode = 
                           NSLineBreakByWordWrapping = 0,         // Wrap at word boundaries, default
                           NSLineBreakByCharWrapping,        // Wrap at character boundaries
                           NSLineBreakByClipping,        // Simply clip
                           NSLineBreakByTruncatingHead,    // Truncate at head of line: "...wxyz"
                           NSLineBreakByTruncatingTail,    // Truncate at tail of line: "abcd..."
                           NSLineBreakByTruncatingMiddle    // Truncate middle of line:  "ab...yz"
    
  • 显示内容的行数 .numberOfLines

    • 具体行数

      label.numberOfLines = 1;
                            2;
                            3;
      
    • 多行

      label.numberOfLines = 0;
      

常用设置

  • 为了显示完全内容,自动调节字号

    // set,点语法
    [label setAdjustsFontSizeToFirWidth:YES];
    label.adjustsFontSizeToFitWidth = YES;
    
  • 边框设置

    • 设置边框为弧度

      // 1、先设置弧度大小
      [label.layer setCornerRadius:(CGFloat) 70]; 
      // 2、为了盖住多出来的部分,矩形变圆的时候边角盖住 
      [label.layer setMasksToBounds:YES];
      
    • 边框颜色(注意颜色的类型转换)

      //  UIColor转成CGColor
      [label.layer setBorderColor:[[UIColor redColor] CGColor];
      
    • 边框宽度

      [label.layer setBorderWith:(CGFloat) ];
      
  • 根据文本的属性计算出新的size

    • 方法

      - (CGRect)boundingRectWithSize:(CGSize)size  // 设定一个大的框架,在这个范围里变化
                                options:(NSStringDrawingOptions)options  //  像下面那样写就行 
                                attributes:(nullable NSDictionary<NSString *, id> *)attributes  // 这个是特点,以这个为根据计算出新的size
                                context:(nullable NSStringDrawingContext *)context  //  nil就行
      
    • 例子

      label.text = @"";
      //  属性
      label.font = [UIFont ....]; 
      label.numberOfLine = 0;
      [labe.text boundingRectWithSize:CGSizeMake([UIScreen mainScreen].bounds.size.width - 20, 2000)
                                 opions: NSStringDrawingUsesLineFragmentOrigin |  //  获取行数
           NSStringDrawingUsesFontLeading  //  这样写就ok
                                 attributes:@{NSFontAttributeName:label.font}
                                 context:nil].size;
      //  重新设置size
      label.frame = CGRectMake(X, Y, size.width, size.height);
      
    • 自定义一个label(传入内容,框架大小和内容属性)

      - (instancetype)initWithFrame:(CGRect)frame withContext:(NSString *)context withFont:(UIFont)font withCGSize:(CGSize)size  
      {
        if(self = [super initWithFrame:frame])
        {
           self.numberOfLines = 0;
           self.text = context;
           self.font = font;
           CGSize size = [self.text boundingRectWithSize:size
               options:NSStringDrawingUsesLineFragmentOrigin |
                       NSStringDrawingUsesFontLeading
              attributes:@{NSFontAttribute:font}
              context:nil].size;
               self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, size.width, size.height);
        }
        return self;
      }
      
  • 尺寸修补

    //  数据完成之后
    [label sizeToFit];
    

  • 在做秒表(XIB)的时候,label内容快速变化,会抖抖抖(选中红圈就ok


添加第三方的字体

  • 先将第三方的字体拖入工程中
  • 点击info.plist
  • 如图:
  • 执行代码
    label.font = [UIFont fontWithName:@"fontName" size:fontSize];
    

results matching ""

    No results matching ""