zoukankan      html  css  js  c++  java
  • iOS学习:UILabel和sizeWithFont方法

     1 - (void)viewDidLoad
     2 {
     3     [super viewDidLoad];
     4     // Do any additional setup after loading the view, typically from a nib.
     5     
     6     NSString *text = @"tw ia nwifei xantianwif eixan tianwi feixan";
     7     
     8     //设置字体,包括字体及其大小
     9     UIFont *font = [UIFont fontWithName:@"Arial" size:50.0f];
    10     
    11     //label可设置的最大高度和宽度
    12     CGSize maxSize = CGSizeMake(320.f, MAXFLOAT);
    13     
    14     //字符串在指定区域内按照指定的字体显示时,需要的高度和宽度(宽度在字符串只有一行时有用)
    15     //一般用法:指定区域的宽度而高度用MAXFLOAT,则返回值包含对应的高度
    16     //如果指定区域的宽度指定,而字符串要显示的区域的高度超过了指定区域的高度,则高度返回0
    17     //核心:多行显示,指定宽度,获取高度
    18     CGSize labelSize = [text sizeWithFont:font
    19                          constrainedToSize:CGSizeMake(320.f, MAXFLOAT)
    20                              lineBreakMode:NSLineBreakByWordWrapping];
    21 
    22     //指定用于显示的区域
    23     CGRect rect = CGRectMake(0.0f, 0.0f, labelSize.width, labelSize.height);
    24     
    25     //CGRectZero表示(0,0,0,0),即留待后面再设置
    26     UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectZero];
    27     
    28     //label默认只显示一行,把numberofline设为0,即表示不限制行数,根据实际显示
    29     [myLabel setNumberOfLines:0];
    30     
    31     myLabel.frame = rect;
    32     myLabel.text = text;
    33     myLabel.font = font;
    34     myLabel.textColor = [UIColor grayColor];
    35     
    36     //把label加入到view里,这样才能显示
    37     [self.view addSubview:myLabel];
    38     
    39     //引用计数减一,因为在上一行 addSubview 时,view已经把mylabel的引用计数加一了
    40     [myLabel release];
    41     
    42 }
    43 
    44 -(void)test
    45 {
    46     NSString *text = @"asfawlfaw;lojf";
    47     UIFont *font = [UIFont fontWithName:@"Arial" size:20.0f];
    48     
    49     //字符串在指定区域内按照指定的字体显示时,需要的高度和宽度(宽度在字符串只有一行时有用)
    50     //一般用法:指定区域的宽度而高度用MAXFLOAT,则返回值包含对应的高度
    51     //如果指定区域的宽度指定,而字符串要显示的区域的高度超过了指定区域的高度,则高度返回0
    52     //核心:多行显示,指定宽度,获取高度
    53     CGSize labelSize = [text sizeWithFont:font
    54                         constrainedToSize:CGSizeMake(320.f, MAXFLOAT)
    55                             lineBreakMode:NSLineBreakByWordWrapping];
    56     
    57     //字符串用指定字体进行单行显示时,需要的高度和宽度
    58     CGSize size1 = [text sizeWithFont:font];
    59     
    60     //字符串用指定字体在指定区域进行单行显示时,需要的高度和宽度;
    61     //一般的用法是,指定区域的高度固定而宽度用MAXFLOAT,则返回值包含对应的宽度
    62     //如果指定区域的宽度不够,则宽度返回0;高度不够则没影响
    63     //核心:单行显示,指定区域的宽度要够大,获取宽度
    64     CGSize size2 = [text sizeWithFont:font
    65                     constrainedToSize:CGSizeMake(MAXFLOAT, 100.0f)];
    66     
    67     
    68     //字符串用指定字体指定宽度和指定换行方式显示时,需要的高度和宽度
    69     //虽然指定了换行方式,在实际计算时也会换行,但返回结果只会返回第一行的高度和宽度
    70     //如果指定宽度小于字符串宽度,则宽度返回0
    71     //核心:貌似没有什么用
    72     CGSize size3 = [text sizeWithFont:font
    73                              forWidth:400.0f
    74                         lineBreakMode:NSLineBreakByWordWrapping];
    75     
    76     CGFloat f = 0.0f;
    77     
    78     //虽然指定了换行方式,在实际计算时也会换行,但返回的结果只是第一行的高度很宽度
    79     //指定了应该显示的字体,最小的字体,实际的字体,在实际计算中,如果宽度不够,则尽量缩小字符串的字体直至能够一行全部显示,如果缩到最小还不能完全显示字符串,则进行截断,返回截断后的字符串的高度和宽度
    80     //字体实际的大小,存放在 actualFontSize里
    81     CGSize size4 = [text sizeWithFont:font
    82                           minFontSize:10.0f
    83                        actualFontSize:&f
    84                              forWidth:100.0f
    85                         lineBreakMode:NSLineBreakByWordWrapping];
    86 
    87 }
  • 相关阅读:
    图片完全填充CardView区域
    调用系统相机拍照并展示
    Android开发之加载GIF图片
    使用SatelliteMenu创建动画菜单
    swift中简单KVC和KVO的使用
    swift GCD的简单使用
    swift协议的使用方法和注意事项
    swift找window,导航栏的简单使用,Controller通过闭包传值简单示例
    swift中闭包的使用
    swift中UIButton的使用
  • 原文地址:https://www.cnblogs.com/zouzf/p/2780040.html
Copyright © 2011-2022 走看看