0

重複の可能性:
UITableViewCellのimageViewの境界を変更する

私にはカスタムUITableViewControllerがあり、その中で動的にスタイルをUITableViewCell設定していますUITableViewCellStyleSubtitle。セルが再利用されるとき、そのプロパティがmyまたは設定imageViewを尊重しないことを除いて、すべてが良好です。理想的には、コンテンツがデフォルトのサイズ/形状(40x40の正方形であると私は信じています)に準拠することを望みます。contentModeclipsToBounds

サブクラス化、または画像のサイズを正確に合わせるようにサイズ変更することを提案する他の投稿(以下のリンク)がありますUITableViewCellが、これらは両方とも回避策のように感じ、(imho)私がすでに小さく引っ張っていることを考えると私のコードを過度に複雑にします(非正方形)画像。

UITableViewCellのサブクラス化を提案します:UITableViewCell のimageViewの境界を変更します

すべての画像のサイズ変更を提案: UITableViewCellのimageViewは40x40に適合

コード例:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

    static NSString *kCellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellIdentifier];
    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:kCellIdentifier];
    }

    NSString *mainText = @"mainText";
    NSString *subtitle = @"subText";

    [[cell textLabel] setText:mainText];
    [[cell detailTextLabel] setText:subtitle];

    // get album cover
    UIImage *imageForCell = [album objectForKey:@"coverImage"];

    // this is the broken part - 
    // it works upon first load, but it is NOT applied when a cell is re-used/dequeued..
    // instead, the image is displayed un-scaled and un-square
    [[cell imageView] setAutoresizingMask:UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth];
    [[cell imageView] setContentMode:UIViewContentModeScaleAspectFill];
    [[cell imageView] setClipsToBounds:YES];

    if (imageForCell) {

        [[cell imageView] setImage:imageForCell];

    } else {

        /* code to retrieve custom image */
    }


    return cell;
}

何が得られますか?UITableViewCellにバグはありますか?それとも、これは何らかの理由で設計によるものですか?

4

1 に答える 1

1

Apple は、レイアウトに関して textLabel、detailTextLabel、および imageView の所有権を主張していると確信しているので、これを欠陥と呼ぶことはできないと思います。

-tableView:willDisplayCell:forRowAtIndexPath:セルのレイアウトをフォーマットするための API です。そこでフォーマットの変更を行うと、運が良くなるはずです。

ドキュメントが暗示しているにもかかわらず、機能しませんでした。

于 2012-10-08T18:56:15.510 に答える