码迷,mamicode.com
首页 > 移动开发 > 详细

IOS7中动态计算UILable的高度

时间:2014-07-02 09:50:21      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   width   文件   

.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地址



IOS7中动态计算UILable的高度,布布扣,bubuko.com

IOS7中动态计算UILable的高度

标签:style   blog   http   color   width   文件   

原文地址:http://blog.csdn.net/quanqinyang/article/details/36190601

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!