为什么这个UIImage在旋转到横向时会从UITableViewCell中消失?

时间:2010-06-15 17:43:40

标签: iphone uitableview uiimageview uiimage uiinterfaceorientation

我正在尝试设置一个可以在右上角有图像的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 个答案:

答案 0 :(得分:2)

我想出来了。解决方案是创建两个UIImageView的...一个用于星形角图像,一个用于单元格背景图像。

我将星角UIImageView作为子视图添加到背景图像UIImageView,然后将其分配给cell.backgroundView。

星形UIImageView通过使用正确定位自己:

starImageView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;

由于整个事物被分配给cell.backgroundView(而不是cell.contentView),它不受单元格的删除按钮或重新排序控件的影响。

答案 1 :(得分:0)

你的UIViewController应该响应didRotateFromInterfaceOrientation。

在此方法中,您可以遍历单元格,使用[cell viewWithTag]获取UIImageView并根据新单元格维度修改frame属性(cell.contentView.bounds)。

祝你好运!