2010-01-16 123 views
15

我想在iPhone程序的簡單分組表格視圖中使用固定圖像作爲背景。不幸的是,無論我做什麼,背景總是純白的。我在這個網站和其他人都採取了幾個假設的解決方案,但無濟於事。以下是表中的視圖控制器類的viewDidLoad方法的初步認識的代碼(注意,此代碼使用一個固體藍色,而不是一個圖像爲簡單起見):UITableView在UITableViewController代碼中添加UIView

self.tableView.opaque = NO; 
self.tableView.backgroundColor = [UIColor clearColor]; 
UIView *backgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; 
backgroundView.backgroundColor = [UIColor blueColor]; 
[self.tableView.window addSubview:backgroundView]; 
[backgroundView release]; 

我懷疑我不定位backgroundView在正確的地方查看。我嘗試過sendToBack :, bringToFront:等等,但我總是得到一個白色的背景。是否有可能從UITableViewController中執行此操作?我必須使用Interface Builder嗎?

回答

19

使用UITableViewsubviews屬性添加你的背景有:

[self.tableView addSubview:backgroundView]; 
[self.tableView sendSubviewToBack:backgroundView]; 

而且,你的細胞/頭等等可能需要設置爲透明爲您backgroundView可見。

+0

'subviews'屬性返回一個'NSArray',它不響應'-addSubview:'方法。 – 2010-01-17 11:38:31

+0

良好的捕獲 - 修復。你只需要'UIView'的'addSubview'方法。 – 2010-01-17 11:40:41

3

我會簡單地設置UITableView本身的backgroundColor屬性。您可以使用的UIColor的+colorWithPatternImage:方法來一個UIImage轉換成的UIColor(將重複整個來看,如果沒有足夠大):

// From within UITableViewController's -viewDidLoad: 
UIImage *image = [UIImage imageNamed:"yourImage.png"]; 
self.tableView.backgroundColor = [UIColor colorWithPatternImage:image];

只需適當增加yourImage.png[email protected]到您的應用程序包,它的大小和你一切都準備好了。

+1

這會導致看起來很奇怪的東西。 – 2010-01-16 22:16:16

+0

似乎只適用於單元格之間的空格。單元格兩邊的表格標題,節標題和空格與圖像不匹配。 – 2010-01-16 22:24:46

+0

它將根據可用的可見空間渲染顏色,因此圖像看起來「粘在」表格的頂部或底部行。 – leolobato 2010-03-12 11:41:20

14

從iOS 3.2開始,UITableView有一個名爲backgroundView的屬性。因此,而不是添加任何子視圖,只是這樣做:

self.tableView.backgroundView = backgroundView; 

表視圖將採取調整背景視圖表中的大小的照顧。背景視圖不會隨表格單元一起移動。換句話說,如果背景視圖是圖像視圖,則圖像將在單元滑過屏幕時保持鎖定狀態。如果存在背景視圖,默認的表格視圖似乎也具有智能以使單元的適當元素自動清除。

+0

使用圖像設置backgroundColor會導致每個單元格行的外部區域出現問題。這很好。 – nh32rg 2012-07-07 16:05:05

+0

對於我在iOS7/8中,如果我設置了backgroundView,它覆蓋了單元格。 – 2015-02-13 02:54:25

相關問題