2012-01-28 111 views
0

我加載的數據在tableview中,每行都有一個簡單的圖片500x300px的大小調整到單元格的大小。uitableviewcell調整圖像

是否可以調整圖像大小?

tableview.m

NSString *filePath = [[NSBundle mainBundle] pathForResource:receip.image ofType:@"jpg"]; 
UIImage *image = [UIImage imageWithContentsOfFile:filePath]; 
cell.imageView.image = image; 

回答

1

我假設你的意思是把它們在細胞中以提高性能之前調整它們的大小?

可以按如下方式與核心顯卡做到這一點:

//define desired size 
CGSize size = CGSizeMake(100.0f, 100.0f); 

//create drawing context 
UIGraphicsBeginImageContextWithOptions(size, NO, 0.0f); 

//draw image at new size 
[image drawInRect:CGRectMake(0.0f, 0.0f, size.width, size.height)]; 

//capture resultant image 
UIImage *resizedImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

被警告,雖然這是一個昂貴的計算任務。您可能需要提前調整所有圖像的大小,可能在後臺線程上,並將調整後的版本存儲在數組中。你肯定不要想要將上面的代碼粘貼在你的cellForRowAtIndexPath方法中,否則你的表滾動性能會變得惡魔般。

0

如果這些圖像來自外部來源(如網絡)。最好先緩存原始文件,然後(如@Nick Lockwood解釋)調整它們的大小(記住視網膜顯示器需要兩倍於高分辨率顯示的寬度/高度)。在完成該過程後,您可以發送「下載」完成的信號,並繼續顯示UITableView

如果您的應用程序包中已包含圖像,建議您製作一個縮略圖並添加它到你的包。爲了更好的表現o'course。

+0

在我的代碼示例中,視網膜顯示已由UIGraphicsBeginImageContextWithOptions的第三個參數照顧。通過傳遞0.0作爲比例,上下文將在iPhone 3GS上以1.0的比例創建,在iPhone 4及更高版本上以2.0的比例創建 - 您不必手動乘上圖像大小。 – 2012-01-29 09:55:33

+0

關於在包中調整圖像大小的好處 - 如果它們隨應用一起提供,您應該只需預先生成縮略圖。 – 2012-01-29 09:56:56