ios动态高度label怎么处理

 我来答
魔乱尘
2016-03-18 · TA获得超过275个赞
知道答主
回答量:117
采纳率:0%
帮助的人:28.4万
展开全部
先考虑只有一行宽度可变
- (CGSize)sizeWithAttributes:(NSDictionary *)attrs;

如果一行不足以显示则指定宽度来计算高度
boundingRectWithSize:options:attributes:context

option参数有待研究 一般情况下用NSStringDrawingUsesLineFragmentOrigin
lenchangluyang
2016-08-22 · TA获得超过1002个赞
知道小有建树答主
回答量:993
采纳率:60%
帮助的人:220万
展开全部
  1. 使用autolayout自适应。

  2. 自己计算得到label的高度。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lishuangbo0123
2016-03-25
知道答主
回答量:10
采纳率:100%
帮助的人:2.3万
展开全部
-(void)viewWillAppear:(BOOL)animated

{

CGSize size=[self setTextHeight:_myLabel textW:100];

CGRect rect=_myLabel.frame;

rect.size=size;

_myLabel.frame=rect;

NSLog(@"%@",NSStringFromCGRect(_myLabel.frame));

}

//通过文本的宽度label的文本呢容以及字体大小设置文本的高度

- (CGSize)setTextHeight:(UILabel *)label textW:(CGFloat)textW

{

CGSize size=CGSizeMake(textW, 0);

NSDictionary *attribute = @{NSFontAttributeName: label.font};

CGSize retSize = [label.text boundingRectWithSize:size

options:\

NSStringDrawingTruncatesLastVisibleLine |

NSStringDrawingUsesLineFragmentOrigin |

NSStringDrawingUsesFontLeading

attributes:attribute

context:nil].size;

return retSize;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
扣丁学堂小之
2016-03-22 · TA获得超过379个赞
知道小有建树答主
回答量:816
采纳率:50%
帮助的人:265万
展开全部
if (isExpand) {
[lblBrief setNumberOfLines:2];
lblBrief.text = [StringUtil subString:strBrief AndSubLength:90];
[btnBrief setImage:[UIImage imageNamed:@"detailBriefDown"] forState:UIControlStateNormal];
[btnBrief setImage:[UIImage imageNamed:@"detailBriefDown"] forState:UIControlStateHighlighted];
}else{
[lblBrief setNumberOfLines:0];
lblBrief.text = strBrief;
[btnBrief setImage:[UIImage imageNamed:@"detailBriefUp"] forState:UIControlStateNormal];
[btnBrief setImage:[UIImage imageNamed:@"detailBriefUp"] forState:UIControlStateHighlighted];
}
可以通过setNumberOfLines:0,来让概述的所以内容显示出来,但如果,不计算所要显示全部内容的总高度,label的宽高是不会自动增大的。

else{
[lblBrief setNumberOfLines:0];
lblBrief.text = strBrief;

CGSize constraint = CGSizeMake(self.view.frame.size.width - (15 * 2), 20000.0f);

CGSize size = [strBrief sizeWithFont:[UIFont systemFontOfSize:10]constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];

[brief setFrame:CGRectMake(15,160,size.width,size.height)];

[btnBrief setImage:[UIImage imageNamed:@"detailBriefUp"]forState:UIControlStateNormal];
[btnBrief setImage:[UIImage imageNamed:@"detailBriefUp"]forState:UIControlStateHighlighted];

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
广苇然0h8
2017-03-09 · 超过52用户采纳过TA的回答
知道小有建树答主
回答量:102
采纳率:57%
帮助的人:37.2万
展开全部

1、创建文件

.h中

+ (CGFloat)getHeightByWidth:(CGFloat)width title:(NSString *)title

font:(UIFont*)font;

+ (CGFloat)getWidthWithTitle:(NSString *)title font:(UIFont *)font;

.m中

+ (CGFloat)getHeightByWidth:(CGFloat)width title:(NSString *)title

font:(UIFont *)font

{

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, width,

0)];

label.text = title;

label.font = font;

label.numberOfLines = 0;

[label sizeToFit];

CGFloat height = label.frame.size.height;

return height;

}

+ (CGFloat)getWidthWithTitle:(NSString *)title font:(UIFont *)font {

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 1000,

0)];

label.text = title;

label.font = font;

[label sizeToFit];

return label.frame.size.width;

}

 2、使用时添加头文件即可

#pragma mark - labelOne SizeToFitHeight

- (void)buildLabelOne

{

UILabel *labelOne = [[UILabel alloc] initWithFrame:CGRectMake(10, 30,
200,

50)];

labelOne.text =

@"这是labelOne的高度自适应这是labelOne的高度自适应这是labelOne的高度自适应这是labelOne的高度自适应";

labelOne.backgroundColor = [UIColor grayColor];

labelOne.font = [UIFont systemFontOfSize:20];

labelOne.numberOfLines = 0;

CGFloat height = [UILabel getHeightByWidth:labelOne.frame.size.width

title:labelOne.text font:labelOne.font];

labelOne.frame = CGRectMake(10, 30, 200, height);

[self.view addSubview:labelOne];

}

#pragma mark - labelTwo SizeToFitWidth

- (void)buildLabelTwo

{

UILabel *labelTwo = [[UILabel alloc] initWithFrame:CGRectMake(10, 300,
50,

100)];

labelTwo.text = @"自适应label";

labelTwo.backgroundColor = [UIColor cyanColor];

labelTwo.font = [UIFont systemFontOfSize:20];

CGFloat width = [UILabel getWidthWithTitle:labelTwo.text

font:labelTwo.font];

labelTwo.frame = CGRectMake(10, 300, width, 100);

[self.view addSubview:labelTwo];

}

希望对你有所帮助,不明白的可以追问

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式