目标C:计算单个标签高度的问题 [英] Objective C: Issue in calculating height of individual labels

查看:77
本文介绍了目标C:计算单个标签高度的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在单元格上添加了一个标签,该标签根据要添加的文本具有动态高度.我将字体大小设置为12,如下所示:

I have a label added to a cell which has a dynamic height based on the text to be added to it. I have set my font size to be 12 as seen below:

CGFloat height = [CustomCell getIndividualLabelHeight:text];
NSLog(@"height of commet:%@ is %f",commentText, height);

CustomOHAttributLabel *label = [[CustomOHAttributLabel alloc]initWithFrame:CGRectMake(CELL_TEXT_LEFT_MARGIN, 2*CELL_SPACING+totalCommentLabelHeight, CELL_CONTENT_WIDTH - (CELL_TEXT_LEFT_MARGIN*2), height)];
[label setLabelwithText:text fontSize:12 andSubString:userName withURL:url];

但是,在我的getIndividualLabelHeight方法中,如果我也将字体设置为12.0(在CGSize大小的设置中),标签中的文本可能会被截断.只有当我将其设置为14时,文本才会被截断.

However, in my getIndividualLabelHeight method, if I set the font to 12.0 as well (in setting of CGSize size), the text in the label might be truncated. It is only when I set it to 14 will the text not be truncated.

+ (CGFloat)getIndividualLabelHeight:(NSString *)text
{
    CGSize constraint = CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f);

    //The full text will only show when I set fontsize to 14 (instead of 12)
    CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];

    return size.height;
}

任何人都知道为什么我不能在我的get height方法中设置与我为文本使用的实际字体大小相同的字体大小吗?

Anyone has any idea why I cannot set the same font size in my get height method as the actual font size I am using for my text?

我为CustomOHAttributLabel添加了我的实现代码,以供进一步参考

I have added my implementation code for the CustomOHAttributLabel for further reference

 @implementation CustomOHAttributLabel

 - (CustomOHAttributLabel*) initWithFrame:(CGRect)frame
 {
     self = [super initWithFrame:frame];
     if (self) 
     {

     }
     return self;
 }


 - (void) setLabelwithText:(NSString *)text fontSize:(CGFloat)fontSize andSubString:(NSString *)subString withURL:(NSString *)url
 {
     NSMutableAttributedString* attrStr = [NSMutableAttributedString attributedStringWithString:text];
     [attrStr setFont:[UIFont systemFontOfSize:fontSize]];
     [attrStr setTextColor:[UIColor grayColor]];

     [attrStr setFont:[UIFont boldSystemFontOfSize:fontSize] range:[text rangeOfString:subString]];
     [attrStr setTextColor:[UIColor darkGrayColor] range:[text rangeOfString:subString]];

self.attributedText = attrStr;

[self addCustomLink:[NSURL URLWithString:url] inRange:[text rangeOfString:subString]];

}

@end

推荐答案

尝试以下代码:-

CGSize labelsize;
    UILabel *commentsTextLabel = [[UILabel alloc] init];;
    commentsTextLabel.tag =50;
    [commentsTextLabel setNumberOfLines:0];
    [commentsTextLabel setBackgroundColor:[UIColor clearColor]];
    NSString *text=@"cakghaahsdlajsldjasdsa;dkas;dkasdkasdasp'dlasp'dlas'dlas'dlas'dlas'dlas'dlasdlasdlasdlasdlas'das'dlasdas";
    [commentsTextLabel setFont:[UIFont fontWithName:@"Helvetica"size:14]];
    labelsize=[text sizeWithFont:commentsTextLabel.font constrainedToSize:CGSizeMake(268, 2000.0) lineBreakMode:UILineBreakModeWordWrap];
    commentsTextLabel.frame=CGRectMake(10, 24, 268, labelsize.height);
    [cell.contentView addSubview:commentsTextLabel];
    [commentsTextLabel release];

根据此代码,您标记的高度将动态调整. 确保是否在表视图单元格中添加了此标签,所以不要忘记也使单元格高度动态化.

from this code you label height will adjust dynamically. Make sure if you are adding this label in your table view cell so don't forgot to make the cell height dynamic also.

这篇关于目标C:计算单个标签高度的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆