Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Add UIView behind UITableView in UITableViewController code

I would like to use a fixed image as the background in a simple grouped table view in my iPhone program. Unfortunately, no matter what I do, the background is always solid white. I have followed several supposed solutions on this site and others to no avail. Here is the relavant code in the viewDidLoad method of the table view controller class (note, this code uses a solid blue color rather than an image for simplicity's sake):

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];

I suspect that I am not positioning the backgroundView view in the right place. I have tried sendToBack:, bringToFront:, and others but I always just get a white background. Is it possible to do this from within the UITableViewController? Must I use Interface Builder?

like image 512
Drew C Avatar asked Jan 16 '10 21:01

Drew C


2 Answers

Use UITableView's subviews property to add your background there:

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

Also, your cell/header etc. will probably need to be set to transparent for your backgroundView to be visible.

like image 60
Adam Woś Avatar answered Oct 01 '22 06:10

Adam Woś


As of iOS 3.2 the UITableView has a property called backgroundView. So instead of adding any subviews, just do this:

self.tableView.backgroundView = backgroundView;

The table view will take care of resizing the background view to the size of the table. The background view will not move with the table cells. In other words, if the background view is an image view, the image will appear to stay locked on the screen with the cells gliding across it. The default table views also seem to have the smarts to make the appropriate elements of the cell clear automatically if there is a background view present.

like image 23
EFC Avatar answered Oct 01 '22 04:10

EFC