如何将 UITableView 的背景设置为图像?
Posted
技术标签:
【中文标题】如何将 UITableView 的背景设置为图像?【英文标题】:How to set the background of a UITableView to an image? 【发布时间】:2009-10-21 17:48:55 【问题描述】:我正在使用上传表格的 UITableViewController。我有一个带有 UITableView 的 Nib 文件。现在我想从界面生成器或从 TableViewController 将 tableView 的背景设置为图像。
如何做到这一点。
好的,所以我在控制器中创建了一个 UIImage。现在当我添加时,我需要在哪里添加它。
当我尝试添加它并将 tableView 的颜色设置为 clearColor 时,它只显示图像而不是表格,尽管我确保将图像发送到所有视图的后面。
伙计们请注意,我不是在处理 UIView 并将 tableView 添加为其子视图,而是在处理 UITableView。
【问题讨论】:
【参考方案1】:在 UITableView 后面放置一个 UIImageView,然后这样做:
tableView.backgroundColor = [UIColor clearColor];
【讨论】:
还要确保您使用的 UITableViewCells(以及它们的子视图)具有透明背景。【参考方案2】:不知何故,我找到了一条路。
self.tableView.backgroundColor = [UIColor clearColor];
self.parentViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageWithData:imageData]];
【讨论】:
这很好用。请注意,如果文件中的图像没有视图那么大,它将被平铺,因此如果您的图像重复,您可以大大减小图像大小。 访问 parentViewController.view 是一个糟糕的想法——你不知道它有什么样的支持,而且这是对封装的严重违反。即使它现在可以工作,下一次 ios 更新也可能完全破坏你的代码。不要这样做。【参考方案3】:self.tableView.backgroundColor = [UIColor clearColor];
self.parentViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"parentViewBackground.png"]];
图片大小应为 2x - 640*960 1x - 320*480
小于上面的尺寸,会被平铺。
【讨论】:
我在UITableView
后面添加了一个UIImageView
,并在viewDidLoad
中设置backgroundColor
以清除。效果很好!谢谢你 damithH【参考方案4】:
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,那么每次加载都会泄漏这些 UIImageView,除非 parentViewController 以某种方式以相同的速率释放它们。
【讨论】:
【参考方案5】:您可以做的是将 tableview 的 backgroundColor 属性设置为 [UIColor clearColor] 并在 TableView 下方有一个相同大小和位置的 UIImageView 以显示您的背景。
【讨论】:
【参考方案6】:TableView 属性包括背景颜色。将此设置为 clearColor;并将图像放在它后面。 (在 IB 中,我认为您必须删除 tableview 添加图像,然后再次添加您的 tableview)
如果您将 UITableViewController 子类化,您将免费获得一个 tableview,不需要 ivar 或 nib,但是由于您使用的是背景,所以我会坚持使用 IB。
【讨论】:
【参考方案7】:您可以使用表格视图的背景视图。这对我有用。
[self.tableView setBackgroundView: [[UIImageView alloc] initWithImage: [UIImage imageNamed:@"????.png"]]];
??????.png 是您的背景图片。
【讨论】:
以上是关于如何将 UITableView 的背景设置为图像?的主要内容,如果未能解决你的问题,请参考以下文章