-1

如果我从 API 返回的图像宽度是cell.image.frame200 ,需要更改。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 回答