2009-10-21 83 views
4

我正在使用上傳一張表的UITableViewController。我有一個UITableView在它的Nib文件。現在我想要從接口構建器或從TableViewController設置tableView的背景到圖像。如何將UITableView的背景設置爲圖像?

如何做到這一點。

好吧,我在我的控制器中創建了一個UIImage。現在,當我添加時,我需要添加它。

當我嘗試添加它並將tableView的顏色設置爲clearColor時,它只是向我顯示圖像而不是表格,儘管我確保將圖像發送到所有視圖的背面。

夥計們請注意,我不是處理UIView並添加tableView作爲其子視圖但我正在處理UITableView。

回答

4

不知怎的,我在附近找到了一個方法。

self.tableView.backgroundColor = [UIColor clearColor]; 

self.parentViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageWithData:imageData]]; 
+0

這很有效,請注意,如果文件的圖像不像視圖那樣大,則該圖像將平鋪,因此如果圖像重複出現可以大大減少圖像尺寸 – Amagrammer 2009-10-21 22:17:51

+0

訪問parentViewController.view是一個可怕的想法 - 你不知道什麼樣的背部它有,這是一個非常糟糕的封裝違規行爲。即使它現在有效,下一次iOS更新可能會完全破壞您的代碼。不要這樣做。 – 2011-03-29 12:29:32

0

你可以做的是將tableview的backgroundColor屬性設置爲[UIColor clearColor],並在你的TableView下面有一個大小和位置相同的UIImageView來顯示你的背景。

5

放置的UITableView後面一個UIImageView,然後做到這一點:

tableView.backgroundColor = [UIColor clearColor]; 
+0

還要確保。您使用的UITableViewCells(以及它們的子視圖)具有透明背景 – 2009-10-21 18:05:42

0

的TableView屬性包括背景顏色。將其設置爲clearColor;並把它放在它後面。 (在IB我認爲你必須刪除桌面視圖添加一個圖像,然後再添加你的桌面視圖)

如果你是UITableViewController的子類,你得到一個免費的桌面視圖,不需要ivar或nib,但是因爲你我正在使用背景,我會堅持使用IB。

1

方法rkbang大綱的backgroundColor = [UIColor colorWithPatternImage: image]偉大的作品。這是另一種通過向parentViewController添加新視圖實現相同效果的方法。如果你想掩蓋parentViewController可能具有的其他內容,這會很有用。

在你的UITableViewController子類,在-viewDidLoad插入:

//make a cool background image 
self.tableView.backgroundColor = [UIColor clearColor]; 
UIImage *patternImage = [UIImage imageNamed:@"backgroundImage.png"]; 
UIImageView * backgroundImageView = [[UIImageView alloc] initWithImage:patternImage]; 

[self.parentViewController.view addSubview:backgroundImageView]; 
[self.parentViewController.view sendSubviewToBack:backgroundImageView]; 
//release the background image and image view (the backgroundImageView is still retained by the parentViewController) 
[patternImage release]; 
[backgroundImageView release]; 

你不妨保持backgroundImageView的軌道,你可以刪除或更換。上面的代碼示例將其留給parentViewController來管理新視圖。如果你正在加載和卸載這個UITableView,你會在每次加載時都泄漏這些UIImageViews,除非parentViewController以某種方式以相同的速率釋放它們。

0

您可以使用表視圖的backgroundView。這對我有效。

[self.tableView setBackgroundView: [[UIImageView alloc] initWithImage: [UIImage imageNamed:@"????.png"]]]; 

其中????。png是您的背景圖片。

2

self.tableView.backgroundColor = [UIColor clearColor];

self.parentViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@「parentViewBackground。PNG「]];

圖像尺寸應該是
2倍 - 640 * 960
1X - 320 * 480

大小比上面更小,它將被平鋪

+0

我在我的'UITableView'後面添加了'UIImageView',並在'viewDidLoad'中設置了'backgroundColor'來清除。很棒!謝謝damithH – 2012-12-21 17:01:28

+0

哇....它工作正常..謝謝 – 2013-06-13 11:59:18

相關問題