zoukankan      html  css  js  c++  java
  • iOS学习:UILabel和sizeWithFont方法,可用于动态调整UILabel大小

    转自:http://www.cnblogs.com/zouzf/archive/2012/11/21/2780040.html


    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        
        NSString *text = @"tw ia nwifei xantianwif eixan tianwi feixan";
        
        //设置字体,包括字体及其大小
        UIFont *font = [UIFont fontWithName:@"Arial" size:50.0f];
        
        //label可设置的最大高度和宽度
        CGSize maxSize = CGSizeMake(320.f, MAXFLOAT);
        
        //字符串在指定区域内按照指定的字体显示时,需要的高度和宽度(宽度在字符串只有一行时有用)
        //一般用法:指定区域的宽度而高度用MAXFLOAT,则返回值包含对应的高度
        //如果指定区域的宽度指定,而字符串要显示的区域的高度超过了指定区域的高度,则高度返回0
        //核心:多行显示,指定宽度,获取高度
        CGSize labelSize = [text sizeWithFont:font
                             constrainedToSize:CGSizeMake(320.f, MAXFLOAT)
                                 lineBreakMode:NSLineBreakByWordWrapping];
    
        //指定用于显示的区域
        CGRect rect = CGRectMake(0.0f, 0.0f, labelSize.width, labelSize.height);
        
        //CGRectZero表示(0,0,0,0),即留待后面再设置
        UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectZero];
        
        //label默认只显示一行,把numberofline设为0,即表示不限制行数,根据实际显示
        [myLabel setNumberOfLines:0];
        
        myLabel.frame = rect;
        myLabel.text = text;
        myLabel.font = font;
        myLabel.textColor = [UIColor grayColor];
        
        //把label加入到view里,这样才能显示
        [self.view addSubview:myLabel];
        
        //引用计数减一,因为在上一行 addSubview 时,view已经把mylabel的引用计数加一了
        [myLabel release];
        
    }
    
    -(void)test
    {
        NSString *text = @"asfawlfaw;lojf";
        UIFont *font = [UIFont fontWithName:@"Arial" size:20.0f];
        
        //字符串在指定区域内按照指定的字体显示时,需要的高度和宽度(宽度在字符串只有一行时有用)
        //一般用法:指定区域的宽度而高度用MAXFLOAT,则返回值包含对应的高度
        //如果指定区域的宽度指定,而字符串要显示的区域的高度超过了指定区域的高度,则高度返回0
        //核心:多行显示,指定宽度,获取高度
        CGSize labelSize = [text sizeWithFont:font
                            constrainedToSize:CGSizeMake(320.f, MAXFLOAT)
                                lineBreakMode:NSLineBreakByWordWrapping];
        
        //字符串用指定字体进行单行显示时,需要的高度和宽度
        CGSize size1 = [text sizeWithFont:font];
        
        //字符串用指定字体在指定区域进行单行显示时,需要的高度和宽度;
        //一般的用法是,指定区域的高度固定而宽度用MAXFLOAT,则返回值包含对应的宽度
        //如果指定区域的宽度不够,则宽度返回0;高度不够则没影响
        //核心:单行显示,指定区域的宽度要够大,获取宽度
        CGSize size2 = [text sizeWithFont:font
                        constrainedToSize:CGSizeMake(MAXFLOAT, 100.0f)];
        
        
        //字符串用指定字体指定宽度和指定换行方式显示时,需要的高度和宽度
        //虽然指定了换行方式,在实际计算时也会换行,但返回结果只会返回第一行的高度和宽度
        //如果指定宽度小于字符串宽度,则宽度返回0
        //核心:貌似没有什么用
        CGSize size3 = [text sizeWithFont:font
                                 forWidth:400.0f
                            lineBreakMode:NSLineBreakByWordWrapping];
        
        CGFloat f = 0.0f;
        
        //虽然指定了换行方式,在实际计算时也会换行,但返回的结果只是第一行的高度很宽度
        //指定了应该显示的字体,最小的字体,实际的字体,在实际计算中,如果宽度不够,则尽量缩小字符串的字体直至能够一行全部显示,如果缩到最小还不能完全显示字符串,则进行截断,返回截断后的字符串的高度和宽度
        //字体实际的大小,存放在 actualFontSize里
        CGSize size4 = [text sizeWithFont:font
                              minFontSize:10.0f
                           actualFontSize:&f
                                 forWidth:100.0f
                            lineBreakMode:NSLineBreakByWordWrapping];
    
    }
    


  • 相关阅读:
    C#聊天+五子棋
    分页
    用户自定义控件(.ascx)
    一、Text To Speech
    验证码
    白话学习MVC(三)页面周期二
    二、Speech To Text
    微软云体验营 北京站 ,4月27日免费开营啦!名额有限速速报名!
    Windows 8 页面应用测试(2)
    《Windows 8应用开发权威指南》图书开始在网络上预售
  • 原文地址:https://www.cnblogs.com/iapp/p/3631668.html
Copyright © 2011-2022 走看看