1

右上隅に画像を表示できる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 =」の行をコメントアウトすると、画像は横向きで表示されます...右端に移動しませんが。

ここで私が間違っていることが他にある場合は、私に知らせてください。

よろしくお願いします。

4

2 に答える 2

2

私はこれを理解しました。解決策は、2つのUIImageViewを作成することでした... 1つはスターコーナー画像用、もう1つはセルの背景画像用です。

スターコーナーUIImageViewをサブビューとして背景画像UIImageViewに追加し、それをcell.backgroundViewに割り当てました。

スターUIImageViewは、次を使用して自分自身を正しく配置します。

starImageView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;

また、すべてが(cell.contentViewではなく)cell.backgroundViewに割り当てられるため、セルの削除ボタンや並べ替えコントロールの影響を受けません。

于 2010-08-20T19:50:34.550 に答える
0

UIViewControllerはdidRotateFromInterfaceOrientationに応答する必要があります。

このメソッドでは、セルを反復処理し、[cell viewWithTag]を使用してUIImageViewを取得し、新しいセルのサイズ(cell.contentView.bounds)に従ってフレームプロパティを変更できます。

幸運を!

于 2010-08-18T04:22:18.903 に答える