【问题标题】:Objective C: Issue in calculating height of individual labels目标 C:计算单个标签高度的问题
【发布时间】:2011-09-28 12:07:47
【问题描述】:

我有一个标签添加到一个单元格,该单元格具有基于要添加到其中的文本的动态高度。我已将字体大小设置为 12,如下所示:

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 时,文本才不会被截断。

+ (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 方法中设置与我用于文本的实际字体大小相同的字体大小吗?

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

 @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

【问题讨论】:

    标签: objective-c ios size height uilabel


    【解决方案1】:

    试试这个代码:-

    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];
    

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

    【讨论】:

    • 感谢您的回复。你知道为什么我当前的方法不能正常工作吗(如果我在 getheight 方法中设置字体大小和标签字体大小相同?)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    • 2015-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-14
    相关资源
    最近更新 更多