1

テーブルビューセルに設定するために、SDWebImageを使用してYouTube JSON Webサービスからサムネイル画像をダウンロードしています。問題は、75x75 の UIImageView に合わせたいので、ダウンロード画像が 120x90 で、私のニーズには大きすぎることです。画像がプレースホルダーにキャッシュされている間は正しく見えますが、キャッシュが完了すると、120x90 の比率のサイズになります。setContentMode:UIViewContentModeScaleToFill を試してみましたが、うまくいかず、この問題の解決方法がわかりません。

NSString *path= [thumbnail valueForKey:@"sqDefault"];

        [cell.imageView setImageWithURL:[NSURL URLWithString:path] placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

        [cell.imageView setContentMode:UIViewContentModeScaleToFill];

        CALayer * l = [cell.imageView layer];

        [l setMasksToBounds:YES];

        [l setCornerRadius:5.0];

どうもありがとう

編集:

カスタム セル拡張クラスでコンテンツ モードを設定しました。

newsCell.m

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        [self.Image   setContentMode:UIViewContentModeScaleToFill];

    }


    return self;
}

セル作成コードは次のとおりです。

マルチメディア.m

 newsCell *cell = [self.tableView 
                          dequeueReusableCellWithIdentifier:@"news"];

        if (cell == nil) {
            cell = [[newsCell alloc] initWithStyle:UITableViewCellSelectionStyleNone reuseIdentifier:@"news"];
        }

問題は、最初のステートメントがセルを作成しているため if (cell == nil) が呼び出されないため、initWithStyle が呼び出されず、コンテンツ モードが設定されていないことですが、最初のステートメントを削除するとセルが作成されません。私はそれを管理する方法がわかりません。

ありがとう

4

2 に答える 2

4

次の 2 つのオプションを試して、どちらがニーズに適しているかを確認してください。

UIViewContentModeScaleAspectFit
UIViewContentModeAspectFill

これらが機能しない場合は、UITableViewCell が UIImageView で contentMode を設定しているためだと推測しています。この場合、適切な contentMode が設定された UIImageView を含む UITableViewCell のサブクラスを作成する必要があります。次に、UITableView でカスタム UITableViewCell サブクラスを使用できます。

于 2012-05-30T17:05:47.533 に答える
1

カスタム セル クラスでテーブル イメージ ビューのカスタム サイズを設定する

    - (void)layoutSubviews {  
    [super layoutSubviews];  
    self.imageView.frame = CGRectMake(5,5,40,32.5);  
    float limgW =  self.imageView.image.size.width;  
    if(limgW > 0) {  
        self.textLabel.frame = CGRectMake(55,self.textLabel.frame.origin.y,self.textLabel.frame.size.width,self.textLabel.frame.size.height);  
        self.detailTextLabel.frame = CGRectMake(55,self.detailTextLabel.frame.origin.y,self.detailTextLabel.frame.size.width,self.detailTextLabel.frame.size.height);  
    }  
}  

詳細については、このリンクを参照してください

于 2012-08-29T08:03:21.757 に答える