UILabel в пользовательской ячейке не будет динамически увеличивать высоту - PullRequest
2 голосов
/ 02 июля 2011

У меня есть пользовательская ячейка, которая содержит 3 UILabels.Последняя метка будет содержать текст, который содержит \ n, так что данные в этой ячейке перечислены по одному элементу в строке.Я знаю необходимое количество строк и знаю, что каждая строка должна иметь высоту 15 пикселей.Код, который я должен изменить размер этой метки, находится здесь:

//Set up the cell
static NSString *CellIdentifier = @"Cell";
CustomHistoryCell *cell = (CustomHistoryCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[CustomHistoryCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
cell.probeInfo.lineBreakMode = UILineBreakModeWordWrap;
cell.probeInfo.numberOfLines = 0;
cell.probeInfo.text = theProbes;
[cell.probeInfo setAdjustsFontSizeToFitWidth:YES];
CGRect newFrame = cell.probeInfo.frame;
newFrame.size.height = nAdditionalLabelHeight*15;
cell.probeInfo.frame = newFrame;

theProbes содержит текст с \ n, а nAdditionalLabelHeight содержит количество строк.Я установил серый цвет фона, чтобы видеть, правильно ли указан размер метки и не изменяется ли его высота.Кто-нибудь может увидеть, что я делаю неправильно?

Вот код для файла .h пользовательской ячейки на случай, если это может помочь:

@interface CustomHistoryCell : UITableViewCell {
    UILabel *_stokerName;
    UILabel *_smokeDateTime;
    UILabel *_probeInfo;

}
@property (nonatomic,retain) UILabel *stokerName;
@property (nonatomic,retain) UILabel *smokeDateTime;
@property (nonatomic,retain) UILabel *probeInfo;

@end

А вот код для настраиваемой ячейки.m файл в случае, если это может помочь:

#import "CustomHistoryCell.h"


@implementation CustomHistoryCell

@synthesize stokerName = _stokerName;
@synthesize smokeDateTime = _smokeDateTime;
@synthesize probeInfo = _probeInfo;

- (id)initWithStyle:(UITableViewCellStyle)style
    reuseIdentifier:(NSString *)reuseIdentifier
{
    if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])
    {
        // Initialization code
        self.stokerName = [[UILabel alloc]init];
        self.stokerName.textAlignment = UITextAlignmentLeft;
        self.stokerName.font = [UIFont boldSystemFontOfSize:20];
        self.smokeDateTime = [[UILabel alloc]init];
        self.smokeDateTime.textAlignment = UITextAlignmentLeft;
        self.smokeDateTime.font = [UIFont systemFontOfSize:12];
        self.probeInfo = [[UILabel alloc]init];
        self.probeInfo.textAlignment = UITextAlignmentLeft;
        self.probeInfo.font = [UIFont systemFontOfSize:12];
        self.probeInfo.backgroundColor = [UIColor grayColor];
        [self.contentView addSubview:self.stokerName];
        [self.contentView addSubview:self.smokeDateTime];
        [self.contentView addSubview:self.probeInfo];
    }


    return self;
}

- (void)layoutSubviews {
    [super layoutSubviews];
    CGRect contentRect = self.contentView.bounds;
    CGFloat boundsX = contentRect.origin.x;
    CGRect frame;
    frame= CGRectMake(boundsX+5,5, 300, 25);
    self.stokerName.frame = frame;
    frame= CGRectMake(boundsX+5,30, 300, 15);
    self.smokeDateTime.frame = frame;
    frame= CGRectMake(boundsX+5,45, 300, 15);
    self.probeInfo.frame = frame;
}

- (void)dealloc
{
    [super dealloc];
}

@end

1 Ответ

0 голосов
/ 06 июля 2011

Я нашел способ справиться с этим.Я в основном переопределил initWithStyle и передал переменную nAdditionalLabelHeight, а затем использовал это, чтобы установить высоту метки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...