如何将UITableView的背景设置为一张图片?

4
我正在使用UITableViewController上传一个表格。我有一个包含UITableView的Nib文件。现在我想要从界面构建器或TableViewController将tableView的背景设置为图像。
如何实现?
好的,所以我在我的控制器中创建了一个UIImage。现在当我添加它时,我需要在哪里添加它?
当我尝试添加它并将tableView的颜色设置为clearColor时,它只显示给我图片而不是表格,尽管我确保图像被发送到所有视图的后面。
请注意,我不是处理UIView并将tableView添加为其子视图,而是处理UITableView。
7个回答

5
将一个UIImageView置于UITableView的后面,然后按照以下步骤操作:
tableView.backgroundColor = [UIColor clearColor];

还要确保您使用的UITableViewCells(以及它们的子视图)具有透明背景。 - Justin Gallagher

4
一些尝试后,我找到了一种方法。
self.tableView.backgroundColor = [UIColor clearColor];

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

这个非常有效。请注意,如果文件中的图像不足视图大小,则会平铺该图像,因此,如果您的图像重复,则可以大幅减小图像大小。 - Amagrammer
访问parentViewController.view是一个可怕的想法 - 你不知道它有什么样的支持,而且这是一种相当糟糕的封装违规。即使现在它能够工作,下一个iOS更新可能会完全破坏你的代码。不要这样做。 - Michael Tyson

2

self.tableView.backgroundColor = [UIColor clearColor];

self.tableView的背景颜色设置为透明。

self.parentViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"parentViewBackground.png"]];

使用图片作为self.parentViewController.view的背景颜色,并将图片平铺展示,图片应该满足以下尺寸:
2x - 640*960
1x - 320*480

如果图片尺寸小于上述大小,则将重复平铺以填充区域。


我在我的UITableView后面添加了一个UIImageView,并在viewDidLoad中将backgroundColor设置为透明。非常好用!谢谢damithH。 - Jay Imerman

1

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,除非parentViewController以某种方式释放它们,否则每次加载都会导致UIImageView泄漏。

0
你可以使用表视图的backgroundView。这对我有用。
[self.tableView setBackgroundView: [[UIImageView alloc] initWithImage: [UIImage imageNamed:@"????.png"]]];

其中,???? .png 是您的背景图片。


0
你可以设置tableView的backgroundColor属性为[UIColor clearColor],并在TableView下方放置一个大小和位置相同的UIImageView来显示你的背景。

0

TableView 的属性包括背景颜色。将其设置为 clearColor;并将图像放在其后面。(在 IB 中,我认为您需要删除 tableview,添加图像,然后再次添加 tableview)

如果您正在子类化 UITableViewController,则可以免费获得 tableview,无需 ivar 或 nib,但是由于您正在使用背景,我建议仍然使用 IB。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接