更改图像帧宽度IF图像宽度= 200

时间:2013-10-31 22:57:41

标签: ios api uitableview uiviewcontroller imageview

如果我从API返回的图片宽度 200 ,我需要将cell.image.frame更改为CGRectMake(105, 110, 10, 180)

目前我在CGRectMake(0, 140, 320, 180)获得任意大小的图片。

所以我只需要在我得到的图像宽度正好是200的情况下更改cell.image.frame

我需要帮助找出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);
         }

但是它不起作用,并且还给了我一个关于捕获细胞强烈可能导致保留周期的警告。

2 个答案:

答案 0 :(得分:1)

你应该将if语句放在完成块中,因为只有你有图像分辨率。

答案 1 :(得分: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);
    }
}];