zoukankan      html  css  js  c++  java
  • iOS开发初探篇——Label的使用

    概述


    本文介绍Label的一些常规用法。由于满足UI需求时会存在很多细节的问题,所以需要对Label能做到一个比较灵活的使用。首先感谢博主KC写的精彩博文

    本文主要内容如下:

      1.Labe的一些基本方法和属性

          2.Label控件如何自动适应控件中text的大小

          3.设计Label中其他的相关类

    Labe的一些基本方法和属性


    至于基本方法和属性,看如下示例:

      
     UILabel *label = [[UILabel alloc]init];
        
     label.backgroundColor = [UIColor redColor];
        
     label.text = @"HUSHUNFENG";
        
     label.font = [UIFont systemFontOfSize:12.0f];
        
     label.textColor = [UIColor yellowColor];
    

    主要还是对font的使用要熟练,还有color通常不会是简单的调用这种方法进行设置。

    Label控件如何自动适应控件中text的大小


    实际工程设计中,通常需要根据text的大小来同步Label控件大小,使Label控件能够刚好完全“包住”Text,又不浪费多余的空间,这样也有利于View的布局。

    有两个方法可以提供这种功能:

    • 对于单行文本数据的显示调用- (CGSize)sizeWithAttributes:(NSDictionary *)attrs;方法来得到文本宽度和高度。无非是让你拿到label而已,具体label的frame还是可以根据实际情况来设定。
    • 对于多行文本数据的显示调用- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context ;方法来得到文本宽度和高度;同时注意在此之前需要设置文本控件的numberOfLines属性为0。

    下面先举个单行的例子:

    UILabel *label = [[UILabel alloc]init];
        
        label.backgroundColor = [UIColor blackColor];
        
        label.text = @"HUSHUNFENG";
        
        label.font = [UIFont systemFontOfSize:12.0f];
        
        label.textColor = [UIColor greenColor];
        
        CGSize userNameSize=[label.text sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:11]}];
        label.frame = CGRectMake(80, 100, userNameSize.width, userNameSize.height);

     注意最后这两句代码。我们通过text得到字体的宽度和高度,然后再去设置Label的frame。

    下面的例子是多行的: 关于 boundingRectWithSize:CGSizeMake(200, 0)中的(200,0)的个人理解:一行中的最大宽度和高度。在多行处理的代码中,最大高度无限。

    重要体会:!!!CGSize userNameSize=[label.text boundingRectWithSize:CGSizeMake(200, 0) options: NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont fontWithName:nil size:15.0f]} context:nil].size;   这个代码无非也是计算出text的实际长和高。只不过可以设定最大长是多少,那么高就会相应地变化。然后label还是可以根据实际来设定。(200,0)中200意味着长最多是200,但高可以无限,也可以设置一个具体值比较妥。

     UILabel *label = [[UILabel alloc]init];
        
        label.backgroundColor = [UIColor blackColor];
        
        label.text = @"苹果专门为开发者提供了一款集成开发环境,它集工程管理、代码编写、代码编译、代码调用、代码版本管理与一体的编译器。";
        label.numberOfLines = 0;
        
        label.font = [UIFont systemFontOfSize:12.0f];
        
        label.textColor = [UIColor greenColor];
         
        CGSize userNameSize=[label.text boundingRectWithSize:CGSizeMake(200, 0) options: NSStringDrawingUsesLineFragmentOrigin  attributes:@{NSFontAttributeName:[UIFont fontWithName:nil size:15.0f]} context:nil].size;
        label.frame = CGRectMake(80, 100, userNameSize.width, userNameSize.height);
    

    设计Label中其他的相关类


    1.UIFont

    2.NSStringDrawing

  • 相关阅读:
    segmentation fault(core dumped)
    (LIS LCS 例题)Max Sum Advanced Fruits Super Jumping! Jumping! Jumping!
    几种数学公式(环排列 母函数 唯一分解定理 卡特兰数 默慈金数 贝尔数 那罗延数)
    map set 详解
    算法录 之 二分和三分
    LIS 最长上升子序列 LCS 最长公共子序列 模板
    JAVA 大数据 例题
    Java 实现大数算法
    7 21 第一次团队赛——————写给队友
    离散化+unique()+二分查找
  • 原文地址:https://www.cnblogs.com/hushunfeng/p/4593539.html
Copyright © 2011-2022 走看看