Почему этот Uiimage исчезает из UiableViewCell при вращении к ландшафту?

StackOverflow https://stackoverflow.com/questions/3047602

Вопрос

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

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

Вот код:

- (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 =», изображение показывает в ландшафте ... хотя он не сдвигается на дальние правые.

Если есть что-то еще, что я делаю не так, пожалуйста, дайте мне знать.

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

Это было полезно?

Решение

Я понял это. Раствор должен был создать два UIIMageView ... Один для Звездного углового изображения и один для фонового изображения клетки.

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

Звезда UiimageView позиционирует себя правильно, используя:

starImageView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;

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

Другие советы

Ваш UIViewController должен реагировать на дидротатфернтразнесение.

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

Удачи!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top