Почему этот UIImage исчезает из UITableViewCell при вращении для озеленения?

Я пытаюсь создать UITableViewCell, который может иметь изображение в правом верхнем углу.

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

Вот код:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

        UIImage *cornerImage = [UIImage imageNamed:@"star_corner.png"];
        UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(cell.contentView.bounds.size.width - cornerImage.size.width,
                                                                               0,
                                                                               cornerImage.size.width,
                                                                               cornerImage.size.height)];
        imageView.tag = kCornerImageViewTag;
        [cell.contentView addSubview:imageView];
        [imageView release];
    }

    UIImageView *theView = (UIImageView *)[cell.contentView viewWithTag:kCornerImageViewTag];
    [theView setImage: [UIImage imageNamed:@"star_corner.png"]];

    cell.textLabel.text = @"the text label";
    return cell;
}

Интересно, если я комментирую "cell.textLabel.text =" строка, изображение действительно показывает в среде..., хотя это не смещается справа.

Если существует что-либо еще, что я делаю неправильно здесь, сообщите мне.

Заранее спасибо за любую помощь.

1
задан Jim Rhoades 15 June 2010 в 17:43
поделиться

2 ответа

Я понял это. Решением было создать два UIImageView ... один для изображения угла звезды и один для фонового изображения ячейки.

Я добавил звездный угол UIImageView в качестве подпредставления к фоновому изображению UIImageView, а затем назначил его для cell.backgroundView.

Звездочка UIImageView позиционирует себя правильно с помощью:

starImageView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;

И поскольку все это присвоено cell.backgroundView (вместо cell.contentView), на него не влияет кнопка удаления ячейки или элементы управления переупорядочением.

2
ответ дан 2 September 2019 в 23:45
поделиться

Ваш UIViewController должен отвечать на didRotateFromInterfaceOrientation.

В этом методе вы можете перебирать ячейки, получать UIImageView с помощью [cell viewWithTag] и изменять свойство фрейма в соответствии с новыми размерами ячейки (cell.contentView.bounds).

Удачи!

0
ответ дан 2 September 2019 в 23:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: