Задача C: проблема в расчете высоты отдельных ярлыков - PullRequest
3 голосов
/ 05 июля 2011

У меня есть метка, добавленная к ячейке, которая имеет динамическую высоту на основе текста, который будет добавлен в нее.Я установил размер шрифта равным 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

1 Ответ

5 голосов
/ 05 июля 2011

попробуйте этот код: -

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

из этого кода высота метки будет изменяться динамически. Убедитесь, что вы добавляете эту метку в ячейку табличного представления, поэтому не забудьте также сделать динамическую высоту ячейки.

...