Добавление UILabel в UiTableViewCell - текст обрезается по вертикали - PullRequest
1 голос
/ 01 марта 2011

При попытке добавить UILabel в пользовательский UITableViewCell возникает проблема. По некоторым причинам рамки вообще не соблюдаются - когда я пытаюсь установить высоту надписи (через CGRectMake), текст обрезается по вертикали. Другими словами, отображается только половина текста.

Когда я играю с высотой кадра CGRectMake, это показывает странное поведение - иногда более низкое значение на самом деле заставляет вещи выравниваться правильно.

Я устанавливаю неправильные значения? Является ли фрейм неправильным свойством для изменения?

Изменить для кода:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
if ((self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])) {
    // Initialization code
    eventName = [[UILabel alloc] initWithFrame:CGRectZero];
    //eventName.backgroundColor = [UIColor blueColor];
    eventName.numberOfLines = 2;
    eventName.minimumFontSize = 8.;
    eventName.adjustsFontSizeToFitWidth = YES;
    eventName.text = @"Event Name";
    [self.contentView addSubview:eventName];

    eventStartEndDate = [[UILabel alloc] initWithFrame:CGRectZero];
    eventStartEndDate.backgroundColor = [UIColor blueColor];
    eventStartEndDate.text = @"Event Start and End Dates";
    [self.contentView addSubview:eventStartEndDate];

    description = [[UILabel alloc] initWithFrame:CGRectMake(10.0, 30.0, 300.0, 20.0)];
    [self.contentView addSubview:description];


}
return self;
}

-(void)layoutSubviews
{
[super layoutSubviews];

if (!self.editing) {
    eventName.frame = CGRectMake(10.0, 10.0, 300.0, 20.0);
    eventStartEndDate.frame = CGRectMake(10.0, 35.0, 300.0, 20.0);;
}

}

1 Ответ

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

Прежде всего, вам следует уделять больше внимания управлению памятью. Вы должны позвонить release на ваш UILabels. Причина, по которой ваши UILabels иногда кажутся обрезанными, заключается в том, что другие ваши метки имеют белый непрозрачный фон. Установка свойства backgroundColor на [UIColor clearColor] делает свое дело.

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        eventName = [[UILabel alloc] initWithFrame:CGRectZero];
        //eventName.backgroundColor = [UIColor blueColor];
        eventName.numberOfLines = 2;
        eventName.minimumFontSize = 8.;
        eventName.adjustsFontSizeToFitWidth = YES;
        eventName.text = @"Event Name";
        eventName.backgroundColor = [UIColor clearColor];
        [self.contentView addSubview:eventName];
        [eventName release];

        eventStartEndDate = [[UILabel alloc] initWithFrame:CGRectZero];
        eventStartEndDate.backgroundColor = [UIColor blueColor];
        eventStartEndDate.text = @"Event Start and End Dates";
        [self.contentView addSubview:eventStartEndDate];
        [eventStartEndDate release];

        description = [[UILabel alloc] initWithFrame:CGRectMake(10.0, 30.0, 300.0, 20.0)];
        description.backgroundColor = [UIColor clearColor];
        [self.contentView addSubview:description];
        [description release];
    }
    return self;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...