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


IOS7中动态计算UILable的高度

时间: 2024-10-07 06:29:28

IOS7中动态计算UILable的高度的相关文章

在AutoLyout中动态获得cell的高度 和 autoLyout中的小随笔

autoLyout中动态获得cell的高度和autoLyout小总结 一.在autoLyout中通过动态的方式来获取cell 的方式呢? 1.       在布局时候要有对于cell中contentView的bottom,top都有一定的约束.通过Storyboard中才有了计算第一步. 2.       在Storyboard中布局好后,给UITableView的estimatedRowHeight属性指定一个预设行高.(例:self.tableView.estimatedRowHeight

iOS开发动态计算cell的高度

在iOS开发过程中,我们经常会用到UITableView, 谈到UITableView当然少不了UITableViewCell.那么有时候我们就会有疑惑,怎么样才能让cell的高度根据文字的大小多少,以及照片的高度来动态设计呢? 下面我们来看一下,到底怎么做才能让cell的高度动态变化,让界面看起来更美观协调一些呢? //动态设置cell的高度 + (CGFloat)heightForRowWithModel:(PhotoInfo *)photoInfo { //1.图片的高度 //让图片等比例

iOS开发总结-UITableView 自定义cell和动态计算cell的高度

UITableView cell自定义头文件: shopCell.h #import <UIKit/UIKit.h> @interface shopCell : UITableViewCell @property (strong, nonatomic)  UIImageView *image;@property (strong, nonatomic)  UILabel *name;@property (strong, nonatomic)  UILabel *itemshop;@propert

根据文本内容动态计算文本框高度的步骤

在视图加载的过程中,是先计算出frame,再根据frame加载视图的,所以在设计计算高度的方法的时候,设计成加号方法; //首先给外界提供计算cell高度的方法 + (CGFloat)heightForRowWithDic:(NSDictionary *)dic { //cell高度 = nameLabel高度 + contentLabel高度 + 间距; return [self heightForText:dic[@"content"]] + 30 + kHeight_NameLa

iOS中动态计算字符串的长度

在iOS7以下动态算一个string的size的时候可以用sizeWithFont - (CGSize)sizeWithFont:(UIFont *)font 具体应用: CGSize statuseStrSize = [lcsstring sizeWithFont:string.font]; 或者 - (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(NSLineBreakMode

IOS 计算UILable字符串高度

IOS7 之前 截取了部分 @interface ZGViewCell () @property (nonatomic, strong) UILabel *nameLable; @end - (UILabel *)nameLable{ if (_nameLable == nil) { _nameLable = [[UILabel alloc] init]; [self.contentView addSubview:_nameLable]; // _nameLable.backgroundColo

window.onload中动态获得img的高度

$(function(){}); window.onload=function(){} $(function(){}) 是在DOM结构渲染完成以后调用的,这时候网页中一些资源还没有加载,比如图片等资源,但是DOM结构已经渲染成功了 window.onload是在网页DOM结构渲染完成,而且资源已经加载成功以后调用的. 当我们在$(function(){})调用$('img').width()的时候,由于图片还没有加载,所以这时候<img>标签的高度就是0,所以返回值就是0.但是当你用windo

动态计算文字的高度

+ (CGSize)sizeWithText:(NSString *)text andFont:(UIFont *)font andMaxSize:(CGSize)maxSize { CGSize expectedLabelSize = CGSizeZero; NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; paragraphStyle.lineBreakMode = NSLine

swift UILabel多行显示时 计算UILable的高度(可用于UILable高度自适应)

代码如下 func heightForView(text:String, font:UIFont, width:CGFloat) -> CGFloat{ let label:UILabel = UILabel(frame: CGRect(x: 0, y: 0, width: width, height: CGFloat.greatestFiniteMagnitude)) label.numberOfLines = 0 label.lineBreakMode = NSLineBreakMode.b