在UITableViewController代码中添加UITable后面的UIView

时间:2010-01-16 21:43:03

标签: iphone cocoa-touch uitableview background

我想在iPhone程序的简单分组表视图中使用固定图像作为背景。不幸的是,无论我做什么,背景总是纯白色。我已经在这个网站上跟随了几个假设的解决方案而其他方面都无济于事。这是表视图控制器类的viewDidLoad方法中的相关代码(注意,为简单起见,此代码使用纯蓝色而不是图像):

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 :,来自ToFront:和其他人,但我总是得到一个白色背景。是否可以在UITableViewController中执行此操作?我必须使用Interface Builder吗?

3 个答案:

答案 0 :(得分:19)

使用UITableView的{​​{1}}属性在那里添加背景信息:

subviews

此外,您的手机/标题等可能需要设置为透明,以便您的backgroundView可见。

答案 1 :(得分:14)

从iOS 3.2开始,UITableView有一个名为backgroundView的属性。因此,不要添加任何子视图,只需执行以下操作:

self.tableView.backgroundView = backgroundView;

表视图将负责将背景视图的大小调整为表的大小。背景视图不会随表格单元格移动。换句话说,如果背景视图是图像视图,则图像将保持锁定在屏幕上,细胞在其上滑动。如果存在背景视图,默认表格视图似乎也有智能自动清除单元格的相应元素。

答案 2 :(得分: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.pngyourImage@2x.png添加到您的应用程序包中,正确调整大小,然后就可以了。