如果我从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);
}
但是它不起作用,并且还给了我一个关于捕获细胞强烈可能导致保留周期的警告。
答案 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);
}
}];