2013-10-31 46 views
-1

如果從API返回的圖像寬度爲,我需要將cell.image.frame更改爲CGRectMake(105, 110, 10, 180)更改圖像幀寬如果圖像寬度= 200

目前我得到的任何尺寸的圖像都在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); 
     } 

但它沒有奏效,並且給了我強烈的捕獲細胞的警告可能導致保留週期。

回答

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); 
    } 
}]; 
+0

感謝您的迴應!這使得更多的意義,對不起,我沒有任何意義。我仍然接到警告,「在區域內強烈地捕獲細胞可能導致保留週期」,有關這方面的任何想法?這是搞亂了一些東西,因爲圖片寬度的框架最初是好的,然後一旦我開始滾動到單元格之後,它就會恢復到不需要的圖片寬度並保持這種狀態。謝謝! – Realinstomp

+0

查看我更新的答案以處理保留週期。 – rmaddy

+0

這絕對有助於消除警告,但它仍然會執行相同的操作,如果單擊並按住單元格然後釋放,圖片會更改大小。這有意義嗎? – Realinstomp

1

你應該把if語句放在完成塊內,因爲只有你有一個圖像分辨率。

+0

感謝您的評論。我更新了這個問題,向您展示了我之前在完成模塊中嘗試過的方法,但這種方法無效。任何建議,爲什麼我做了沒有工作?謝謝您的幫助! – Realinstomp