zoukankan      html  css  js  c++  java
  • IOS7中动态计算UILable的高度

    .h文件

    #import <UIKit/UIKit.h>
     
    @interface UILabel (ContentSize)
     
    - (CGSize)contentSize;
     
    @end

    .m文件

    #import "UILabel+ContentSize.h"
     
    @implementation UILabel (ContentSize)
    
    - (CGSize)contentSize {
       NSMutableParagraphStyle * paragraphStyle = [[NSMutableParagraphStyle alloc] init];
        paragraphStyle.lineBreakMode = self.lineBreakMode;
        paragraphStyle.alignment = self.textAlignment;
        
        NSDictionary * attributes = @{NSFontAttributeName : self.font,
                                      NSParagraphStyleAttributeName : paragraphStyle};
        
        CGSize contentSize = [self.text boundingRectWithSize:CGSizeMake(self.frame.size.width, MAXFLOAT)
                                                  options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading)
                                               attributes:attributes
                                                  context:nil].size;
        return contentSize;
    }
    @end

    这个类是在别人的基础上改动的

    以下是详细的实现:

     UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(20, 20, 280, 20)];
        label.font = [UIFont boldSystemFontOfSize:15.0f];  //UILabel的字体大小
        label.numberOfLines = 0;  //必须定义这个属性,否则UILabel不会换行
        label.textColor = [UIColor whiteColor];
        label.textAlignment = NSTextAlignmentLeft;  //文本对齐方式
        [label setBackgroundColor:[UIColor redColor]];
        label.lineBreakMode = NSLineBreakByWordWrapping;
        
        NSLog(@"%d",label.lineBreakMode);
        //宽度不变,依据字的多少计算label的高度
        NSString *str = @"伴随着张震岳的这首老歌,仿佛我又回到了过去,回到了大学即将分别的日子,带着不舍与迷惘和他们说再见。又是一年毕业季,看着朋友圈各种晒毕业照,毕业旅行照,学士帽漫天的飞舞。各种送别活动在鲜花和掌声中慢慢退去色彩,心里不时充满着各种思念。离开校园整整一年了,每当和别人谈起母校各种自豪,大学生活各种多彩。人生经历各种丰富,事实上内心还是留有种种遗憾;四年的蹉跎时光,有人收获了知识。有人收获了人生阅历,还有人收获了爱情,而我收获的仅仅有那清纯的友谊,兄弟情。

    分别整整一年了,还记得那时我们都是多么的不舍,同学情,兄弟情,混合着酒精流到心里,一米八几的大男孩哭的稀里哗啦,拥抱着说再见;之后的我们离开了熟悉的校园,奔赴在各个工作岗位。去体现自己的价值,为生活而忙碌着;一转身。有些人真的就再也不见。

    毕业一周年,你们还好吗?工作还顺利吗?学习还顺心吗?一切都回不了头,仅仅能在心里默默地想着你们,希望你们安好。

    。。"; // CGSize size = [str sizeWithFont:label.font constrainedToSize:CGSizeMake(label.frame.size.width, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping]; // //依据计算结果又一次设置UILabel的尺寸 // [label setFrame:CGRectMake(20, 10, 280, size.height)]; // label.text = str; label.text = str; [label setFrame: CGRectMake(20, 20, 280, [label contentSize].height)]; [self.view addSubview:label];

    上面的凝视部分是老的方法。

    这里要注意几点:

    1、我在调用contentSize前设置下label.lineBreakMode属性。
    2、文字究竟换不换行的关键是设置CGSizeMake(w,h),差别主要在w,h的值改动。


    Demo地址

    
    

  • 相关阅读:
    POJ1239
    HDU 2829 四边形不等式优化
    返回数字二进制的最高位位数o(n)
    矩阵快速幂 模板
    HDU4718 The LCIS on the Tree(LCT)
    HDU4010 Query on The Trees(LCT)
    HDU3487 Play With Chains(Splay)
    CF444C DZY Loves Colors
    HDU4836 The Query on the Tree(树状数组&&LCA)
    HDU4831&&4832&&4834
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/6951645.html
Copyright © 2011-2022 走看看