我试图建立一个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 =”行,图像的确显示景观...虽然它不移动到最右侧。

如果还有别的什么事,我做错了,请让我知道。

预先感谢任何帮助。

有帮助吗?

解决方案

我这出。该解决方案是创建两个的UIImageView的...一个明星的角落形象,以及一个用于小区的背景图像。

我添加星角的UIImageView作为一个子视图的背景图像的UIImageView,然后分配该至cell.backgroundView。

星的UIImageView位置本身正确地使用的:

starImageView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;

和由于整个事情被分配给cell.backgroundView(而不是cell.contentView),它不受该单元的删除按钮或重新排序控制。

其他提示

您的UIViewController应didRotateFromInterfaceOrientation响应。

在此方法可以通过细胞循环,按照新的单元尺寸(cell.contentView.bounds)获得与[细胞viewWithTag]所述的UIImageView和修改帧属性。

祝你好运!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top