2011-05-21 111 views
2

我有一個沒有XIB的UITableview控制器。 我通過這樣設置的tableview的背景色:UITableview背景顏色-iphone

[self.tableView setBackgroundColor:[UIColor colorWithPatternImage: 
            [UIImage imageNamed:@"MmyImage.png"]]]; 

我的圖像是一個梯度圖像,所以eventhough上面的代碼是好的,它重繪圖像針對每個小區時的tableview進入編輯視圖,它看起來不像看起來優雅的線條。

我想設置tableviews背景以清除顏色並將超級視圖的顏色設置爲圖像,以便tableview在超級視圖上平滑過渡。但下面的代碼不起作用:

[self.view setBackgroundColor:[UIColor colorWithPatternImage: 
           [UIImage imageNamed:@"myImage.png"]]]; 
[self.tableView setBackgroundColor:[UIColor clearColor]]; 

這使得背景完全白色,我不知道爲什麼。

幫助讚賞..謝謝。

編輯:新的代碼,但是,這並不工作,以及:

UIImageView * imgBg = [[UIImageView alloc] initWithImage:[[UIImage imageNamed:@"myImage.png"] stretchableImageWithLeftCapWidth:6 topCapHeight:6]]; 
    imgBg.frame = self.tableView.window.bounds; 
    [self.tableView.superview addSubview:imgBg]; 
//[self.view addSubview:imgBg]; 
    //[self.tableView.window sendSubviewToBack:imgBg]; 
    //[self.view bringSubviewToFront:self.tableView]; 
    [self.tableView setBackgroundColor:[UIColor clearColor]]; 
    [imgBg release]; 
+1

你試過了:'self.tableView.opaque = NO;'? – 2011-05-21 09:00:00

+0

細胞的背景也可能是白色的。 – 2011-05-21 09:03:41

+0

嘗試不透明,不起作用..細胞背景有一個單獨的灰色漸變圖像,它工作正常.. – user542584 2011-05-21 09:45:22

回答

6

在自定義UITableViewController子類中,self.view將返回與self.tableView相同的值。所以你在那裏做的是改變同一個對象。最後,你會看到UIWindow。因此,要獲得期望的結果,你應該這樣做 -

[self.view.window setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"myImage.png"]]]; 
[self.tableView setBackgroundColor:[UIColor clearColor]]; 

UITableViewbackgroundView屬性。用它。

aTableView.backgroundView = [[[UIView alloc] initWithFrame:aTableView.bounds] autorelease]; 
aTableView.backgroundView.backgroundColor = backgroundColor; 
+0

嗨,感謝您的建議,嘗試過,但不起作用...它顯示純白色作爲背景與上述。 – user542584 2011-05-21 09:45:53

+0

編輯我的答案。它爲我工作。 – 2011-05-21 10:08:58

+0

謝謝,它終於起作用了! – user542584 2011-05-21 10:31:34

0

那麼你的第二個代碼將是正確的,除了:

[self.view setBackgroundColor:[UIColor colorWithPatternImage: 
           [UIImage imageNamed:@"myImage.png"]]]; 

替換此:

UIImageView * imgBg = [[UIImageView alloc] initWithImage:[[UIImage imageNamed:@"myImage.png"] stretchableImageWithLeftCapWidth:6 topCapHeight:6]]; 
imgBg.frame = self.view.bounds; 
[self.view addSubview:imgBg]; 
[self.view sendSubviewToBack:imgBg]; 

我認爲: [self.tableView setBackgroundColor:[UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.0]];會有所幫助,這是現在唯一的區別。

+0

我有單元格背景顏色設置好。我需要的是桌面背景顏色。 – user542584 2011-05-21 09:46:19

+0

我已編輯我的答案,以您的需求 – Roki 2011-05-21 10:03:56

+0

嗨,謝謝,但仍然無法正常工作。我用我的最新代碼編輯了我的答案。我也嘗試了評論中的選項。 – user542584 2011-05-21 10:26:11

0

首先在你的xib文件中添加一個父視圖。在該父視圖中添加表視圖。將父視圖的背景顏色設置爲所需的背景。然後將你的tableview的背景顏色設置爲[UIColor clearColor]。

如果您的表視圖是組表樣式或不是?如果它是組表格樣式,那麼該單元格具有不同的背景。然後你需要清除每個單元格的背景。做最好的辦法是,

  1. 創建一個空白UIView *bkview = [[UIView alloc] initWithRect:CGRect(0,0)];

  2. 集這 爲你的細胞背景視圖。

我希望這會起作用。

+0

嗨,正如我所說,沒有XIB ..所以不幸我無法編輯它。 – user542584 2011-05-21 10:27:33