2010-02-16 61 views
1

我想創建一個透明表與一個alpha值。在我的主循環中,我創建了一個背景圖像,將其添加到主窗口,然後創建一個具有透明背景色的UITableView並將其添加到主窗口。出於某種原因,tableView背景顏色在包含條目的單元格上設置了兩次。 (即,具有入口的細胞具有0.4 0.8代替的α值)UITableView背景顏色設置兩次

以我的UITableView init方法,這是代碼,我有

self.tableView.backgroundColor = [UIColor colorWithWhite:1 alpha:0.4]; 
[self.tableView setNeedsDisplay]; 

這適用於在大多數情況下,除了一些奇怪的原因細胞具有條目不太透明比沒有條目

我試圖把我的cellForRowAtIndexPath方法如下細胞:(嘗試了所有的單元格的子視圖的只是要確定)

cell.backgroundView.backgroundColor = [UIColor clearColor]; 
cell.contentView.backgroundColor = [UIColor clearColor]; 
cell.textLabel.backgroundColor = [UIColor clearColor]; 
[cell.backgroundView setNeedsDisplay]; 
[cell.contentView setNeedsDisplay]; 
[cell.textLabel setNeedsDisplay]; 

這並沒有做任何事情來解決問題。我在網上廣泛搜索,但似乎沒有人遇到這個問題;任何幫助將不勝感激!

回答

0

出於某種原因,UITableView的復位tableView:cellForRowAtIndexPath:委託方法以及顯示其之間的單元的背景色。

嘗試實施tableView:willDisplayCell:forRowAtIndexPath:和單元格背景顏色設置爲透明那裏。

表視圖在它使用單元格繪製一行之前將其發送給它的委託,從而允許委託在顯示之前自定義單元對象。此方法爲委託人提供了覆蓋表視圖較早設置的基於狀態的屬性的機會,例如選擇和背景顏色。委託返回後,表視圖僅設置alpha和frame屬性,然後僅在滑動或滑出行時對行進行動畫處理。

+0

感謝您的回答;我似乎仍然雖要遇到的問題.. 我試圖實現wilLDisplayCell:forRowAtIndexPath和背景設置爲clearColor,沒有變化 – GLee11

0

如果您可以將您的背景效果重新定位到您的tableView背後的不同視圖,那麼您可以將tableColor的backgroundColor設置爲clearColor。這也將用於contentView。

(請記住,有性能方面的原因,爲什麼一個表的默認配置是使用不透明的意見。)

+0

的問題是,我想的backgroundColor是不透明的,所以我將它設置爲具有阿爾法值爲0.4。會發生什麼是它將不透明度應用兩次,一次應用於表格背景,一次應用於單元格的內容視圖,因此有效單元格的alpha值爲0.8。 – GLee11

0

我有同樣的問題只是爲我工作的事情是這樣的:

tableView.backgroundView = [[[UIView alloc]init]autorelease];