2013-09-10 128 views
0

我有一個標準的(即不是自定義的)帶有文本和圖像的TableView單元格,問題是我的圖像大小不同,我想把它們放入類似UIViewContentModeScaleAspectFill的東西。我只是希望UIImage是54x54,而不是一直調整大小 - 我只是想讓它們變成方形!在iOS中停止TableView單元格UIImage的大小調整

有很多想法,但他們都沒有工作,離我最近的工作,但圖像是在文本的頂部(它添加了另一個圖像作爲子視圖)。

我並不熱衷於使用自定義單元格,因爲我使用編輯模式來拖動某些東西,而且我還沒有想通過自定義單元格。

編輯

我最近試過了;

UIImage *tempImage = [UIImage imageWithData:data]; 
CGSize size = CGSizeMake(54, 54); 
UIGraphicsBeginImageContext(size); 
[tempImage drawInRect:CGRectMake(0, 0, size.width, size.height)]; 
UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
cell.imageView.image = scaledImage; 

我有這在cellForRow,我希望會這樣做;

cell.imageView.contentMode = UIViewContentModeScaleAspectFill; 

這隻適用於自定義單元格;

- (void)layoutSubviews { 
    [super layoutSubviews]; 
    self.imageView.frame = CGRectMake(0,0,54,54); 
} 

這很好用,但它涵蓋了文本;

UIImageView *imgView=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 54, 54)]; 
imgView.backgroundColor=[UIColor clearColor]; 
[imgView.layer setCornerRadius:8.0f]; 
[imgView.layer setMasksToBounds:YES]; 
[imgView setImage:[UIImage imageWithData: imageData]]; 
[cell.contentView addSubview:imgView]; 

這顯示了我的確切問題;

Stackoverflow problem

ANOTHER編輯

好這個工作,謝謝;

[cell setIndentationWidth:54]; 
[cell setIndentationLevel:1]; 

UIImageView *imgView=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 54, 54)]; 
imgView.backgroundColor=[UIColor clearColor]; 
[imgView.layer setMasksToBounds:YES]; 
[imgView setImage:myImages[indexPath.row]]; 
[cell.contentView addSubview:imgView]; 
+0

你嘗試什麼選擇嘗試一下呢? – Wain

回答

1

,我建議你到子類的UITableViewCell並創建自己的自定義單元格:d

但是,無論如何...加入這個

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 

UIImageView *imgView = nil; 
if (cell == nil) 
{ 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier]; 

    imgView=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 54, 54)]; 
    imgView.backgroundColor=[UIColor clearColor]; 
    imgView.contentMode = UIViewContentModeScaleAspectFill; 
    imgView.tag = 123; 

    [cell.contentView insertSubview:imgView atIndex:0]; 
    [cell setIndentationWidth:54]; 
    [cell setIndentationLevel:1]; 
} 
else 
{ 
    imgView = (UIImageView*)[cell.contentView viewWithTag:123]; 
} 
imgView.image = [UIImage imageNamed:@"myImage"]; 
+1

關鍵是setIndentation .....使我能夠使用另一種遮蔽文本的方法。 –

+0

剛剛看到與TAG的舉措,很好的電話。 –

+0

只是爲了清楚你必須setMasksToBounds或它不起作用。 –