2010-02-11 69 views
0

我有一個UITableView,其中當然我使用了一些UITableViewCells。現在一些單元格有一個圖標/圖像,我想在文本前面顯示,而另一些則沒有。我沒有在Interface Builder中創建UITableViewCells,只是使用默認的東西:是否可以在UITableViewCell中的UIImageView上設置固定寬度?

//自定義表格視圖單元格的外觀。 - (UITableViewCell的*)的tableView:(UITableView的*)的tableView的cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
} 

// Set up the cell... 
switch (indexPath.row) { 
    case 0: 
     cell.textLabel.text = @"Nearby"; 
     cell.imageView.image = [UIImage imageNamed:@"marker.png"]; 
     break; 
    case 1: 
     cell.textLabel.text = @"Bookmarked";    
     cell.imageView.image = [UIImage imageNamed:@"bookmark.png"]; 
     break; 
    case 2: 
     cell.textLabel.text = @"Other"; 
     break; 
    default: 
     break; 
} 

return cell; 

}

這似乎是完美的工作,但我有寬度的小問題cell.imageView。我使用的圖標似乎有不同的寬度。有些像素是21像素,其他像素是25像素,而在某些演員中,我根本沒有圖標。

這導致textLabel文本出現在不同的位置(取決於imageView的寬度)。

現在我的問題是,我可以添加一些代碼/聲明,這將確保我的單元格imageView總是30像素寬?即使這個imageView沒有圖像?

這可以通過編程方式完成,還是必須在InterfaceBuilder中創建自定義單元格,甚至創建自己的UITableViewCell後代。

歡迎您就此主題提供任何信息。

問候,

斯特凡

回答

0

一個稍微簡單但卻很冒險的方式:

1)確保你的圖像寬度相同。使用像Acorn這樣的圖像編輯器爲圖像填充透明區域。

2)製作一個透明的.png 30(或其他)像素寬。將其設置爲沒有圖標的行上的圖像。

3)沒有第三步!

+0

嗨, A實際上也在考慮這一點。如果圖像具有相同的大小以啓動智慧,它會讓我的生活更輕鬆。 – Stefaan 2010-02-11 11:53:31

+0

快速做了一個測試。調整我的圖標到30x30,問題解決:-)雖然可能要選擇一個稍小的圖標大小,但可能28 x 28也可以。 感謝您的提示。 – Stefaan 2010-02-11 12:28:19

1

在表格單元中的ImageView的屬性是隻讀的,然而,ImageView的屬性,因爲它們通常會,這樣就可以操縱它的寬度通過它的框架屬性。

我幾乎可以肯定,設置一個空的imageView的寬度不會幫助。我相信,如果imageView不包含圖像,表格單元格不會將其添加爲子視圖...

在沒有圖像的單元格上,可以嘗試設置textLabel的框架所以如果圖像存在,它的起源是其他文本標籤的位置?請記住,如果你這樣做,你將不得不縮短textLabels的寬度。

相關問題