-1

API から返された画像の幅が200の場合に変更cell.image.frameする必要があります。CGRectMake(105, 110, 10, 180)

現在、取得した任意のサイズの画像が にありCGRectMake(0, 140, 320, 180)ます。

cell.image.frameしたがって、返される画像の幅が正確に 200 である場合にのみ、を変更する必要があります。

ステートメントをどこに入れるか、ifステートメント正確に何を入れるかifを理解する助けが必要です。

私はそれを機能させることができないようですので、助けていただければ幸いです、ありがとう!

以下はコードです:

WebListCell.m

- (void)layoutSubviews {
    [super layoutSubviews];
    self.imageView.frame = CGRectMake(0, 140, 320, 180);   
}

WebListViewController.m

Images *imageLocal = [feedLocal.images objectAtIndex:0];
NSString *imageURL = [NSString stringWithFormat:@"%@", imageLocal.url];
[cell.imageView setImageWithURL:[NSURL URLWithString:imageURL]
                   placeholderImage:[UIImage imageNamed:@"img.gif"]
                          completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType)
        {
        // Code
        }];

編集:これをパーツの中に入れてみました//Code

if(imageWith == [NSString stringWithFormat:@"200"])
         {
           cell.imageView.frame = CGRectMake(105, 110, 10, 180);
         }

しかし、それは機能せず、細胞を強く捕捉すると保持サイクルにつながる可能性があるという警告も表示されました.

4

2 に答える 2

1

画像の幅をチェックするコードは意味がありません。あなたがしたい:

if(image.size.width == 200) {
    cell.imageView.frame = CGRectMake(105, 110, 10, 180);
}

更新:保持サイクルの問題に対処するには、次のようなものが必要です。

__weak UITableViewCell *weakcell = cell;
[cell.imageView setImageWithURL:[NSURL URLWithString:imageURL]
                      placeholderImage:[UIImage imageNamed:@"img.gif"]
                      completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
    if(image.size.width == 200) {
        weakcell.imageView.frame = CGRectMake(105, 110, 10, 180);
    }
}];
于 2013-10-31T23:42:47.083 に答える
1

画像解像度があるのはそこだけなので、完了ブロック内に if ステートメントを配置する必要があります。

于 2013-10-31T23:01:39.840 に答える