Почему этот UIImage исчезает из UITableViewCell при повороте в ландшафт? - PullRequest
1 голос
/ 15 июня 2010

Я пытаюсь настроить 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 =», изображение будет отображаться в альбомной ориентации ... хотя оно не смещаетсяв крайнее правое положение.

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

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

Ответы [ 2 ]

2 голосов
/ 20 августа 2010

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

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

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

starImageView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;

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

0 голосов
/ 18 августа 2010

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

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

Удачи!

...